2011-04-20 64 views
1

我想打印從列表中的數據,如打印物品的任意數:習慣的方法從列表中每行

['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 

所以每行項目的數量並不一定是對項目的數量的一個因素名單。如果列表太短,某些行可能會以更少的元素結束。

+2

有什麼不對的石斑魚食譜?這可能是你能得到的最好的。 – 2011-04-20 12:02:14

+0

我沒有想到它有什麼問題,我對Python成語沒有很好的感覺,並且想知道是否有人知道一個快速的方法。 – 2011-04-20 13:10:13

+0

我不喜歡關於石斑菜(和其他一些)的唯一事情是它是一個配方,而不是一個功能。在什麼星球上覆制和粘貼比導入更好? – 2011-04-20 13:30:39

回答

4

This Works。看起來很簡單。

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])) 
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:而實際上僅一個打印解決方案可能是在包含許多有用的名單變量。

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 
相關問題