2024-05-10 18:05:02 发布
网友
我有一个如下列表,其中第一个元素是id,另一个是字符串:
[(1, u'abc'), (2, u'def')]
我只想从这个元组列表创建一个id列表,如下所示:
[1,2]
我将在__in中使用此列表,因此它必须是一个整数值列表。
__in
>>> a = [(1, u'abc'), (2, u'def')] >>> [i[0] for i in a] [1, 2]
你是说这样的事吗?
new_list = [ seq[0] for seq in yourlist ]
实际上,您拥有的是一个tuple对象列表,而不是一个集合列表(正如您最初的问题所暗示的那样)。如果它实际上是一个集合列表,那么没有第一个元素因为集合没有顺序。
tuple
在这里,我创建了一个平面列表,因为通常这比创建一个包含1个元素元组的列表更有用。但是,只需将seq[0]替换为(seq[0],),就可以轻松地创建一个包含1个元素元组的列表。
seq[0]
(seq[0],)
使用zip函数来分离元素:
>>> inpt = [(1, u'abc'), (2, u'def')] >>> unzipped = zip(*inpt) >>> print unzipped [(1, 2), (u'abc', u'def')] >>> print list(unzipped[0]) [1, 2]
编辑(@bradsomon): 上面的方法适用于Python 2.x,其中zip返回一个列表。
zip
在Python 3.x中,zip返回一个迭代器,下面与上面的等价:
>>> print(list(list(zip(*inpt))[0])) [1, 2]
你是说这样的事吗?
实际上,您拥有的是一个
tuple
对象列表,而不是一个集合列表(正如您最初的问题所暗示的那样)。如果它实际上是一个集合列表,那么没有第一个元素因为集合没有顺序。在这里,我创建了一个平面列表,因为通常这比创建一个包含1个元素元组的列表更有用。但是,只需将
seq[0]
替换为(seq[0],)
,就可以轻松地创建一个包含1个元素元组的列表。使用zip函数来分离元素:
编辑(@bradsomon): 上面的方法适用于Python 2.x,其中
zip
返回一个列表。在Python 3.x中,
zip
返回一个迭代器,下面与上面的等价:相关问题 更多 >
编程相关推荐