Python - 获取元组列表的第一个索引?

37
在给定一个元组列表的情况下,最紧凑的返回该列表中每个元组的第一个(或第二个,无所谓)元素的方法是什么?
对于:
[(1,'one'),(2,'two'),(3,'three')]

返回的列表将会是:

[1,2,3]
5个回答

53

如果你需要两个列表的值,可以使用zip函数。

>>> r=(1,'one'),(2,'two'),(3,'three')
>>> zip(*r)
[(1, 2, 3), ('one', 'two', 'three')]

4
可以,Python 3 中是这样的:list(zip(*r))。此代码不需要解释,只需翻译为通俗易懂的中文即可。 - Ryan Epp

42
>>> tl = [(1,'one'),(2,'two'),(3,'three')]
>>> [item[0] for item in tl]
[1, 2, 3]

13
>>> mylist = [(1,'one'),(2,'two'),(3,'three')]
>>> [j for i,j in mylist]
['one', 'two', 'three']
>>> [i for i,j in mylist]
[1, 2, 3]

这里使用了一个列表生成式(请查看此链接)。因此它在mylist中迭代元素,依次将ij设置为元组中的两个元素。它与以下代码等效:

>>> newlist = []
>>> for i, j in mylist:
...     newlist.append(i)
... 
>>> newlist
[1, 2, 3]

这是一个列表推导式。 - Xavier Combelle

3

试试这个。

>>> list(map(lambda x: x[0], my_list))

-2

你也可以试试这个..

dict(my_list).keys()

永远不要这样做。因为索引会被改变。 - Shameem
@Shameem,请举个例子详细说明。 - SuperNova
抱歉我没有完全阅读问题。我的意思是输出列表的索引将与输入列表不同。但这并不重要。 - Shameem

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接