我有以下代码;
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,我不确定如何执行此操作。
非常感谢。
答案 0 :(得分:1)
您可以使用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]
答案 1 :(得分:1)
这里似乎有一个复制粘贴错误,因为您只需要在执行切片时将6
更改为4
。另请注意,您为range
和切片使用了两个不同的列表。我想你的意思是:
for d in range(0,len(codedmessage),4):
codewordgrid.append(list(codedmessage[d:d+4]))
答案 2 :(得分:0)
或没有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
答案 3 :(得分:0)
Numpy应该能够很容易地处理这个问题。如果codedmessage是一个列表:
import numpy
codewordgrid = numpy.array(codedmessage).reshape(-1,4,2)
numpy.savetxt('codewordgrid.txt',codewordgrid,fmt='%s',delimiter=", ")
这里唯一的区别是代码字对之间不会有逗号。
e.g。
['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']