有没有办法将参数列表转换为列表?
像:
list(*arguments)
不起作用,因为 list() 最多接受 1 个参数...
我试图将元组的元组转换为列表
list(('a', *('b', 5))
根本没用……
有没有办法将参数列表转换为列表?
像:
list(*arguments)
不起作用,因为 list() 最多接受 1 个参数...
我试图将元组的元组转换为列表
list(('a', *('b', 5))
根本没用……
对于元组的元组,例如,
a = ((1, 2), (3, 4), (5, 6))
将其放入列表取决于您期望的列表 - 您可以将元组直接传递到list
(它需要任何可迭代的)以获得元组列表:
>>> list(a)
[(1, 2), (3, 4), (5, 6)]
相反,如果您想要一个扁平列表,您想要itertools.chain
- 它为您提供了一个生成器,但您可以将其传递给获取list
列表:
>>> import itertools
>>> list(itertools.chain.from_iterable(a))
[1, 2, 3, 4, 5, 6]
如果你想要一个列表列表,你需要一个列表理解:
>>> [list(b) for b in a]
[[1, 2], [3, 4], [5, 6]]
为了展平一个由元组和单个值组成的异构元组,它会变得有点复杂——你要做的就是把所有的单个值变成单长度的元组或列表,然后和chain
上面的例子一样。如果你只想展平元组,而不是,例如,嵌套列表,你可以这样做:
>>> a = ('a', ('b', 'c'))
>>> list(itertools.chain.from_iterable(b if isinstance(b, tuple) else [b] for b in a))
['a', 'b', 'c']