以惯用方式每行打印列表中任意数量的项
我想从一个列表中打印数据,比如:
['0.10', '0.15', '-0.25', '0.30', '1.50', '1.70']
但是,我不想像这样只打印列表中的一个元素:
for item in list:
print item
我想在每一行打印任意数量的项目。我能想到很多复杂的方法,之前看到一个答案是用文档中 itertools 的 grouper 这个方法。我愿意使用这个,但我觉得可能还有更好的方法。
我想要的输出示例可能是:
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
我觉得这个解决方案更清晰一些:
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)
希望这个对你有帮助 :)
附言:其实如果列表里有很多变量,使用一个打印语句的解决方案可能会更有用。
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
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] ) )