列表理解打印转储

时间:2016-11-03 10:28:28

标签: python for-loop list-comprehension

我有一个包含大量十六进制数的列表。我想以转储的形式打印它(假设一行中有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循环转换为合适的理解列表?

1 个答案:

答案 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)