【问题标题】:Pythonically inserting multiple values to a list以 Python 方式将多个值插入到列表中
【发布时间】:2013-02-09 02:42:41
【问题描述】:

我要翻这个名单:

l=["Three","Four","Five","Six"]

进入这个:

['Three', 3, 'Four', 4, 'Five', 5, 'Six', 6]

我使用这段代码(效果很好)来做到这一点:

for i,j in zip(range(1,len(l)*2,2),range(3,7)*2):
    l.insert(i,j)

但我猜 Python 不会以此为荣。有没有更短的方法?

【问题讨论】:

标签: python list insert idioms


【解决方案1】:
In [124]: l=["Three","Four","Five","Six"]

In [125]: [x for x in itertools.chain(*zip(l, range(3,7)))]
Out[125]: ['Three', 3, 'Four', 4, 'Five', 5, 'Six', 6]

【讨论】:

    【解决方案2】:

    我可能会这样做:

    >>> a = ["Three","Four","Five","Six"]
    >>> b = range(3,7)
    >>> zip(a,b)
    [('Three', 3), ('Four', 4), ('Five', 5), ('Six', 6)]
    >>> [term for pair in zip(a,b) for term in pair]
    ['Three', 3, 'Four', 4, 'Five', 5, 'Six', 6]
    

    或者,使用itertools.chain

    >>> from itertools import chain
    >>> list(chain.from_iterable(zip(a,b)))
    ['Three', 3, 'Four', 4, 'Five', 5, 'Six', 6]
    

    【讨论】:

      猜你喜欢
      • 2021-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多