列表元组的解包列表
Unpacking List of Tuples of List(s)
我有一个元组列表,其中元组中的一个元素是一个列表。
example = [([0, 1, 2], 3, 4), ([5, 6, 7], 8, 9)]
我只想得到一个元组列表
output = [(0, 1, 2, 3, 4), (5, 6, 7, 8, 9)]
这个 question 似乎解决了元组的问题,但我担心我的用例在内部列表中有更多元素并且
[(a, b, c, d, e) for [a, b, c], d, e in example]
看起来很乏味。有没有更好的写法?
在 Python3 你也可以这样做:
[tuple(i+j) for i, *j in x]
如果您不想拼写输入的每个部分
如果编写一个函数是一个选项:
from itertools import chain
def to_iterable(x):
try:
return iter(x)
except TypeError:
return x,
example = [([0, 1, 2], 3, 4), ([5, 6, 7], 8, 9)]
output = [tuple(chain(*map(to_iterable, item))) for item in example]
给出:
print(output)
[(0, 1, 2, 3, 4), (5, 6, 7, 8, 9)]
它比其他解决方案要冗长得多,但是无论内部元组中列表的位置或数量如何,它都有一个很好的优势。根据您的要求,这可能是矫枉过正或一个好的解决方案。
元组可以像列表一样与 +
连接。所以,你可以这样做:
>>> example = [([0, 1, 2], 3, 4), ([5, 6, 7], 8, 9)]
>>> [tuple(x[0]) + x[1:] for x in example]
[(0, 1, 2, 3, 4), (5, 6, 7, 8, 9)]
请注意,这适用于 Python 2.x 和 3.x。
我有一个元组列表,其中元组中的一个元素是一个列表。
example = [([0, 1, 2], 3, 4), ([5, 6, 7], 8, 9)]
我只想得到一个元组列表
output = [(0, 1, 2, 3, 4), (5, 6, 7, 8, 9)]
这个 question 似乎解决了元组的问题,但我担心我的用例在内部列表中有更多元素并且
[(a, b, c, d, e) for [a, b, c], d, e in example]
看起来很乏味。有没有更好的写法?
在 Python3 你也可以这样做:
[tuple(i+j) for i, *j in x]
如果您不想拼写输入的每个部分
如果编写一个函数是一个选项:
from itertools import chain
def to_iterable(x):
try:
return iter(x)
except TypeError:
return x,
example = [([0, 1, 2], 3, 4), ([5, 6, 7], 8, 9)]
output = [tuple(chain(*map(to_iterable, item))) for item in example]
给出:
print(output)
[(0, 1, 2, 3, 4), (5, 6, 7, 8, 9)]
它比其他解决方案要冗长得多,但是无论内部元组中列表的位置或数量如何,它都有一个很好的优势。根据您的要求,这可能是矫枉过正或一个好的解决方案。
元组可以像列表一样与 +
连接。所以,你可以这样做:
>>> example = [([0, 1, 2], 3, 4), ([5, 6, 7], 8, 9)]
>>> [tuple(x[0]) + x[1:] for x in example]
[(0, 1, 2, 3, 4), (5, 6, 7, 8, 9)]
请注意,这适用于 Python 2.x 和 3.x。