![](/img/trans.png)
[英]Is there a way to print a list that moves to a new line after specific items in the list?
[英]Idiomatic way to print arbitrary number of items from a list on each line
我想从列表中打印数据,例如:
['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
因此,每行上的项目数不一定是列表上项目数的一个因素。 如果列表太短,则某些行可能以较少的元素结尾。
这可行。 看起来很简单。
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] ) )
另一个(也许)更简单的版本:
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
认为此解决方案更加清晰:
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:实际上,一种仅打印的解决方案在包含许多变量的列表中可能会有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.