我有一个像下面这样的列表,其中第一个元素是id,另一个是字符串:
[(1, u'abc'), (2, u'def')]
我只想从下面的元组列表中创建一个id列表:
[1,2]
我将在__in中使用这个列表,因此它需要是一个整数值列表。
我有一个像下面这样的列表,其中第一个元素是id,另一个是字符串:
[(1, u'abc'), (2, u'def')]
我只想从下面的元组列表中创建一个id列表:
[1,2]
我将在__in中使用这个列表,因此它需要是一个整数值列表。
当前回答
要获取列表或元组的元素,可以遍历列表或元组
a = [(1, u'abc'), (2, u'def')]
list1 = [a[i][0] for i in range(len(a))]
print(list1)
其他回答
要获取列表或元组的元素,可以遍历列表或元组
a = [(1, u'abc'), (2, u'def')]
list1 = [a[i][0] for i in range(len(a))]
print(list1)
我想知道为什么没有人建议使用numpy,但现在检查后我明白了。对于混合类型数组,它可能不是最好的。
这将是numpy中的一个解决方案:
>>> import numpy as np
>>> a = np.asarray([(1, u'abc'), (2, u'def')])
>>> a[:, 0].astype(int).tolist()
[1, 2]
你是说像这样的事吗?
new_list = [ seq[0] for seq in yourlist ]
实际上,您拥有的是一个元组对象列表,而不是一个集合列表(正如您最初的问题所暗示的那样)。如果它实际上是一个集合的列表,那么就没有第一个元素,因为集合没有顺序。
这里我创建了一个平面列表,因为一般来说,这似乎比创建一个只有一个元素元组的列表更有用。但是,只需用(seq[0],)替换seq[0],就可以轻松创建一个只有1个元素元组的列表。
另一个简单的建议是,如果你需要转换为一个嵌套的元组,并且列表中的所有元素的答案将是:
s=[]
for i in range(len(a)):
s.append(a[i][0])
print(s)
输出:
[(1),(2)]
这些是元组,不是集合。你可以这样做:
l1 = [(1, u'abc'), (2, u'def')]
l2 = [(tup[0],) for tup in l1]
l2
>>> [(1,), (2,)]