我有一个包含大量十六进制数的列表。我想以转储的形式打印它(假设一行中有4个值)。我可以通过以下for循环来做到这一点:
#Trying to achieve this (printing values in lines of 3 from list):
for i,val in enumerate(my_list):
if( i!=0 and i%3 == 0 ):
print val
else:
print val,
我使用以下列表理解:
clist = [ val if i%3 == 0 else val, for i,val in enumerate(my_list) ]
print clist
这会产生语法错误。我知道的错误部分是“val”。我知道将上面的for循环转换为理解列表会比我通常做的方式有所不同。 我应该如何将给定的for循环转换为合适的理解列表?
答案 0 :(得分:2)
尝试这样的生成器:
clist = ( val+'' if (i+1)%3 else val+'\n' for i,val in enumerate(my_list) )
然后打印出来:
for c in clist:
print c,
-
编辑:
如果你不想在打印时进行迭代,只需准备清单并立即打印出来:
clist = [val + (' ' if (i+1)%3 else '\n') for i,val in enumerate(my_list)]
print ''.join(clist)