簡體   English   中英

Python列表 - 行和列

[英]Python List - rows and columns

我有以下代碼;

for d in range(0,len(newlist),4):
    codewordgrid.append(list(codedmessage[d:d+6]))

然后按照這條線印刷一些東西;

<<<CODEWORD GRID>>>
[['E', 'A'], ['E', 'A'], ['E', 'A'], ['F', 'C'], ['F', 'C'], ['F', 'C']]
[['F', 'C'], ['F', 'C'], ['F', 'A'], ['F', 'A'], ['F', 'A'], ['C', 'A']]
[['F', 'A'], ['C', 'A'], ['C', 'A'], ['C', 'A']]
[]
[]
[]
[]
[]
[]

基本上我的目標是這樣 - 以無限數量的行打印列表(所以基本上消息可以是行中的任何長度),但是將列數限制為4.所以我希望示例看起來更像這樣;

    ['E', 'A'], ['E', 'A'], ['E', 'A'], ['F', 'C']
    ['F', 'C'], ['F', 'C'], ['F', 'C'], ['F', 'C']
    ['F', 'A'], ['F', 'A'], ['F', 'A'], ['C', 'A']
    ['F', 'A'], ['C', 'A'], ['C', 'A'], ['C', 'A']

所以重申一下,取決於編碼消息的長度取決於行數,但是我想將列數限制為4,我不確定如何執行此操作。

非常感謝。

您可以使用itertools展平列表:

chain = itertools.chain.from_iterable(your_nested_list):
for i in range(0, len(chain), 4):
   print str(chain[i:i+4])[1:-1]

這里似乎你有一個復制粘貼錯誤,因為你只需要在切片時將6更改為4 另請注意,您為range和切片使用兩個不同的列表。 我想你的意思是:

for d in range(0,len(codedmessage),4):
    codewordgrid.append(list(codedmessage[d:d+4]))

或者沒有itertools或其他模塊:

def eachToken(codewordgrid):
  for element in codewordgrid:
    for token in element:
      yield token

for i, token in enumerate(eachToken(codewordgrid)):
  print token, ("," if i % 4 else "\n"),
print

Numpy應該能夠很容易地處理這個問題。 如果codedmessage是一個列表:

import numpy
codewordgrid = numpy.array(codedmessage).reshape(-1,4,2)
numpy.savetxt('codewordgrid.txt',codewordgrid,fmt='%s',delimiter=", ")

這里唯一的區別是代碼字對之間不會有逗號。

例如

['E' 'A'], ['E' 'A'], ['E' 'A'], ['F' 'C']
['F' 'C'], ['F' 'C'], ['F' 'C'], ['F' 'C']
['F' 'A'], ['F' 'A'], ['F' 'A'], ['C' 'A']
['F' 'A'], ['C' 'A'], ['C' 'A'], ['C' 'A']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM