2016-10-28 101 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

非常感谢您回答这个问题 –