如何转换
[(1,), (2,), (3,)]
到
[1, 2, 3]
答案 0 :(得分:67)
答案 1 :(得分:53)
@Levon的解决方案非常适合您的情况。
作为旁注,如果元组中包含可变数量的元素,您还可以使用chain
中的itertools
。
>>> a = [(1, ), (2, 3), (4, 5, 6)]
>>> from itertools import chain
>>> list(chain(a))
[(1,), (2, 3), (4, 5, 6)]
>>> list(chain(*a))
[1, 2, 3, 4, 5, 6]
>>> list(chain.from_iterable(a)) # More efficient version than unpacking
[1, 2, 3, 4, 5, 6]
答案 2 :(得分:26)
如果元组中可以包含可变数量的元素,那么这是另一种选择:
>>> a = [(1,), (2, 3), (4, 5, 6)]
>>> [x for t in a for x in t]
[1, 2, 3, 4, 5, 6]
这基本上只是以下循环的缩写形式:
result = []
for t in a:
for x in t:
result.append(x)
答案 3 :(得分:7)
>>> a = [(1,), (2,), (3,)]
>>> zip(*a)[0]
(1, 2, 3)
列表:
>>> list(zip(*a)[0])
[1, 2, 3]
答案 4 :(得分:5)
您还可以使用sum
功能,如下所示:
e = [(1,), (2,), (3,)]
e_list = list(sum(e, ()))
它还可以使用列表列表将其转换为单个列表,但您需要按照以下方式使用它:
e = [[1, 2], [3, 4], [5, 6]]
e_list = list(sum(e, []))
这将为您提供[1, 2, 3, 4, 5, 6]
答案 5 :(得分:4)
始终可以通过 ... for
... in
... 从其他列表中提取列表。在这种情况下,它将是:
<强> [i[0] for i in e]
强>
答案 6 :(得分:3)
>>> a = [(1,), (2,), (3,)]
>>> b = map(lambda x: x[0], a)
>>> b
[1, 2, 3]
使用python3,你必须将list(..)函数放到map(..)的输出中,即
b = list(map(lambda x: x[0], a))
这是使用python内置函数的一行的最佳解决方案。
答案 7 :(得分:2)
您还可以在列表解析中解压缩元组:
e = [(1,), (2,), (3,)]
[i for (i,) in e]
仍然会给:
[1, 2, 3]
答案 8 :(得分:2)
使用运算符或求和
>>> import operator
>>> a = [(1,), (2,), (3,)]
>>> list(reduce(operator.concat, a))
[1, 2, 3]
(OR)
>>> list(sum(a,()))
[1, 2, 3]
>>>
答案 9 :(得分:1)
一个班轮哟!
list(*zip(*[(1,), (2,), (3,)]))
答案 10 :(得分:0)
在这些情况下,我喜欢这样做:
a = [(1,), (2,), (3,)]
new_a = [element for tup in a for element in tup]
即使您的元组具有多个元素,此方法也有效。这等效于执行此操作:
a = [(1,), (2,), (3,)]
new_a = []
for tup in a:
for element in tup:
new_a.append(element)