我希望把這個列表:Pythonically插入多個值列表
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不會爲它感到驕傲。有沒有更簡單的方法呢?
我希望把這個列表:Pythonically插入多個值列表
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不會爲它感到驕傲。有沒有更簡單的方法呢?
我可能會做這樣的事情:
>>> 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]
對於第一個示例中的zip()命令+1。不錯。 – mkind 2013-02-23 15:18:46
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]
相關:Python的方式,以兩個列表交替的方式結合起來?](HTTP: //stackoverflow.com/q/3678869/4279) – jfs 2013-02-23 15:11:00