我想与每个元组的第一个元素形成一个元组。我是一个Python初学者,也许这是一个简单的,但我不能找到一种方法来做它的帮助。如何用一个元组元组的每个元组的第一个值形成一个新的元组?
例如:
输入
x = (('A','B','C'),('D','E','F'),('G','H','I'))
输出:
y= ('A', 'D', 'G')
我想与每个元组的第一个元素形成一个元组。我是一个Python初学者,也许这是一个简单的,但我不能找到一种方法来做它的帮助。如何用一个元组元组的每个元组的第一个值形成一个新的元组?
例如:
输入
x = (('A','B','C'),('D','E','F'),('G','H','I'))
输出:
y= ('A', 'D', 'G')
使用理解和转换为一个元组;
>>> x = (('A','B','C'),('D','E','F'),('G','H','I'))
>>> y = tuple([l[0] for l in x])
>>> y
('A', 'D', 'G')
或者只是'tuple(l [0] for x)',使用生成器表达式而不是列表理解。 – user2357112
@ user2357112谢谢。我只是试着'(l [0]为x)',并完全错过了它的发生器方面。 – CAB
该语法是由genexps采取的,任何替代的元组理解语法都不会比'元组(... ... ... in ...)'更具可读性。 – user2357112
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]
如果你只想要第一个元组; 'y = zip(* x)[0]' – CAB
非常感谢您回答这个问题 –
你尝试过什么吗?应该非常简单地循环每个元素,并获得每个元组的第一个位置。你试过这个吗? – Tom