我有一个像下面这样的列表,其中第一个元素是id,另一个是字符串:
[(1, u'abc'), (2, u'def')]
我只想从下面的元组列表中创建一个id列表:
[1,2]
我将在__in中使用这个列表,因此它需要是一个整数值列表。
我有一个像下面这样的列表,其中第一个元素是id,另一个是字符串:
[(1, u'abc'), (2, u'def')]
我只想从下面的元组列表中创建一个id列表:
[1,2]
我将在__in中使用这个列表,因此它需要是一个整数值列表。
当前回答
你可以解包你的元组,使用列表推导式只得到第一个元素:
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]
你可以使用“元组解包”:
>>> my_list = [(1, 'abc'), (2, 'def')]
>>> my_ids = [idx for idx, val in my_list]
>>> my_ids
[1, 2]
在迭代时,每个元组被解包,其值被设置为变量idx和val。
>>> x = (1, 'abc')
>>> idx, val = x
>>> idx
1
>>> val
'abc'
要获取列表或元组的元素,可以遍历列表或元组
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,)]
另一个简单的建议是,如果你需要转换为一个嵌套的元组,并且列表中的所有元素的答案将是:
s=[]
for i in range(len(a)):
s.append(a[i][0])
print(s)
输出:
[(1),(2)]