从参数列表创建列表

时间:2012-10-07 02:14:35

标签: python list python-2.7 arguments

有没有办法将参数列表转换成列表?

像:

list(*arguments)

不要工作,因为list()最多需要1个参数......

我试图将元组元组转换为列表

list(('a', *('b', 5)) 
剂量工作......

1 个答案:

答案 0 :(得分:1)

对于元组的元组,例如,

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']