2016-10-28 173 views
0

我想與每個元組的第一個元素形成一個元組。我是一個Python初學者,也許這是一個簡單的,但我不能找到一種方法來做它的幫助。如何用一個元組元組的每個元組的第一個值形成一個新的元組?

例如:

輸入

x = (('A','B','C'),('D','E','F'),('G','H','I')) 

輸出:

y= ('A', 'D', 'G') 
+0

你嘗試過什麼嗎?應該非常簡單地循環每個元素,並獲得每個元組的第一個位置。你試過這個嗎? – Tom

回答

3

使用理解和轉換爲一個元組;

>>> x = (('A','B','C'),('D','E','F'),('G','H','I')) 
>>> y = tuple([l[0] for l in x]) 
>>> y 
('A', 'D', 'G') 
+0

或者只是'tuple(l [0] for x)',使用生成器表達式而不是列表理解。 – user2357112

+0

@ user2357112謝謝。我只是試着'(l [0]爲x)',並完全錯過了它的發生器方面。 – CAB

+0

該語法是由genexps採取的,任何替代的元組理解語法都不會比'元組(... ... ... in ...)'更具可讀性。 – user2357112

3
x = (('A','B','C'),('D','E','F'),('G','H','I')) 

for each in zip(*x): 
    print(each) 

打印:

('A', 'D', 'G') 
('B', 'E', 'H') 
('C', 'F', 'I') 

使用zip()功能。 Read more here.

編輯:

像CAB說,如果你只是想第一個,你可以這樣做:

y = zip(*x)[0] 
+1

如果你只想要第一個元組; 'y = zip(* x)[0]' – CAB

+0

非常感謝您回答這個問題 –