2013-05-16 155 views
2

所以我必須:如何打印for循環列表

s = (4,8,9), (1,2,3), (4,5,6) 
for i, (a,b,c) in enumerate(s): 
    k = [a,b,c] 
    e = k[0]+k[1]+k[2] 
    print e 

它會打印:

21 
6 
15 

但我希望它是:

(21,6,15) 

我試着使用這個,但它不是我想要的:

print i, 

這是可能的嗎?

回答

9

這裏有幾個選項:

  • 使用元組拆包和發電機:

    print tuple(a+b+c for a, b, c in s) 
    
  • 使用sum()和發電機:

    print tuple(sum(t) for t in s) 
    
  • 使用map()

    print tuple(map(sum, s)) 
    
+1

在這裏的3個選項中,我最喜歡第二個選項。 – mgilson

+0

真的很有幫助!謝謝。 – user2240542

0

print總是打印新行。如果您想打印一行,則需要一次完成所有打印。

在你的循環中,創建一個字符串並打印出來。或者,根據你想要的格式,你也可以創建一個元組(用圓括號表示)。

順便說一句,如果你想添加一個列表的成員,你可以使用sum

e = sum(k) 

此外,s已經是一個元組,你不需要一一列舉它 - 你可以使用以下代碼循環:

for k in s: 
    e = sum(k) 

現在,請繼續前進並將它們放在一起。

1
s = (4,8,9), (1,2,3), (4,5,6) 
print tuple([sum(x) for x in s]) 
+0

請注意,列表理解可以通過刪除'[]'變成生成器表達式。它在這裏並沒有太大的區別,但是在其他情況下,在內存使用和性能方面它可能很重要。 – mgilson

+0

downvote的任何原因? –

+0

不要看着我 - 我沒有這樣做:) – mgilson

0
>>> l = [] 
>>> for i, (a,b,c) in enumerate(s): 
...  k = [a,b,c] 
...  e = k[0]+k[1]+k[2] 
...  l.append(e) 
... 
>>> print l 
[21, 6, 15] 

我希望這會有所幫助。您將列表k的總和追加到列表l並最終打印出來。

+0

爲什麼要創建一箇中間列表來提取索引?你可以這樣做,因爲我可以在這裏列舉出:「在這裏也很容易。 – mgilson

+0

我想保持我的代碼儘可能接近OPs – hd1

+0

感謝這個工作,當's'是那個長度,但是當我用更長的長度嘗試它時,它似乎不工作... – user2240542