【问题标题】:Creating list from argument list [closed]从参数列表创建列表[关闭]
【发布时间】:2012-09-27 17:59:54
【问题描述】:

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

类似:

list(*arguments)

不起作用,因为 list() 最多接受 1 个参数...

我正在尝试将元组的元组转换为列表

list(('a', *('b', 5)) 

剂量工作...

【问题讨论】:

标签: python list python-2.7 arguments


【解决方案1】:

对于元组的元组,例如,

a = ((1, 2), (3, 4), (5, 6))

将其放入列表取决于您期望的列表 - 您可以将元组直接传递到 list(它需要任何可迭代)以获取元组列表:

>>> list(a)
[(1, 2), (3, 4), (5, 6)]

如果您想要一个扁平化列表,则需要 itertools.chain - 它为您提供了一个生成器,但您可以将 that 传递给 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']

【讨论】:

  • chain() 是否支持将整数与字符混合? (链('a', 5))
  • @Jah 是的,虽然不太像那样。它不关心你给它的任何可迭代对象 in 是什么,但它的所有参数都必须是可迭代对象(字符串是,整数不是) - list(chain('a', [5])) 给出 ['a', 5]
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-18
  • 2021-01-25
  • 2019-08-24
  • 1970-01-01
  • 2016-04-28
  • 2021-01-31
  • 1970-01-01
相关资源
最近更新 更多