我有一个像下面这样的列表,其中第一个元素是id,另一个是字符串:

[(1, u'abc'), (2, u'def')]

我只想从下面的元组列表中创建一个id列表:

[1,2]

我将在__in中使用这个列表,因此它需要是一个整数值列表。


当前回答

>>> a = [(1, u'abc'), (2, u'def')]
>>> [i[0] for i in a]
[1, 2]

其他回答

你可以解包你的元组,使用列表推导式只得到第一个元素:

l = [(1, u'abc'), (2, u'def')]
[f for f, *_ in l]

输出:

[1, 2]

不管你在元组中有多少个元素,这都是有效的:

l = [(1, u'abc'), (2, u'def', 2, 4, 5, 6, 7)]
[f for f, *_ in l]

输出:

[1, 2]
>>> a = [(1, u'abc'), (2, u'def')]
>>> [i[0] for i in a]
[1, 2]

要获取列表或元组的元素,可以遍历列表或元组

a = [(1, u'abc'), (2, u'def')]

list1 = [a[i][0] for i in range(len(a))]

print(list1)

这些是元组,不是集合。你可以这样做:

l1 = [(1, u'abc'), (2, u'def')]
l2 = [(tup[0],) for tup in l1]
l2
>>> [(1,), (2,)]

我想知道为什么没有人建议使用numpy,但现在检查后我明白了。对于混合类型数组,它可能不是最好的。

这将是numpy中的一个解决方案:

>>> import numpy as np

>>> a = np.asarray([(1, u'abc'), (2, u'def')])
>>> a[:, 0].astype(int).tolist()
[1, 2]