从每行的列表中打印任意数量的项目的惯用法

时间:2011-04-20 11:59:34

标签: python

我想从列表中打印数据,例如:

['0.10', '0.15', '-0.25', '0.30', '1.50', '1.70']

但是,不是使用以下内容在列表中打印一个元素:

for item in list:
    print item

我想从每行的列表中打印任意数量的项目。我可以想到许多混乱的方法来做这件事我看到了一个答案,它使用了文档上的itertools页面中的石斑鱼配方。我很乐意使用它,但我怀疑可能有更好的方法。

我可能想要的示例输出是:

0.10   0.15  -0.25
0.30   1.50   1.70

或者:

0.10   0.15  -0.25   0.30
1.50   1.70

因此,每行上的项目数量不一定是列表中项目数量的一个因素。如果列表太短,某些行可能会以较少的元素结束。

3 个答案:

答案 0 :(得分:4)

这很有效。看起来很简单。

for i in range(0, len(some_list), line_length):
    print( some_list[i:i+line_length] )

如果你想要问题中显示的文字格式,你必须做这样的事情。

for i in range(0, len(some_list), line_length):
    print( "  ".join( "{0:.2f}".format(x) for x in some_list[i:i+line_length] ) )

答案 1 :(得分:2)

另一个(可能)更简单的版本:

mylist = ['0.10', '0.15', '-0.25', '0.30', '1.50', '1.70']
line_items = 3

for n, item in enumerate(mylist):
    if (n+1) % line_items:
        print item,
    else:
        print item

产生

0.10 0.15 -0.25
0.30 1.50 1.70

答案 2 :(得分:0)

认为这个解决方案更清晰一点:

a = ['0.10', '0.15', '-0.25', '0.30', '1.50', '1.70']
body = []
length = 2
for b in xrange(len(a)):
    body.append(str(a[b]))
    if b % length:
        body.append("\n")
    else:
        body.append("\t")
print "".join(body)

希望这个有用:)

PS:实际上,只有一个打印解决方案可能对包含许多变量的列表有所帮助。