私はlist
Pythonで持っています:
l = ['a', 'c', 'e', 'b']
オリジナルのすぐ隣に各要素を複製したいと思います。
ll = ['a', 'a', 'c', 'c', 'e', 'e', 'b', 'b']
要素の順序は保持する必要があります。
私はlist
Pythonで持っています:
l = ['a', 'c', 'e', 'b']
オリジナルのすぐ隣に各要素を複製したいと思います。
ll = ['a', 'a', 'c', 'c', 'e', 'e', 'b', 'b']
要素の順序は保持する必要があります。
>>> l = ['a', 'c', 'e', 'b']
>>> [x for pair in zip(l,l) for x in pair]
['a', 'a', 'c', 'c', 'e', 'e', 'b', 'b']
または
>>> from itertools import repeat
>>> [x for item in l for x in repeat(item, 2)]
['a', 'a', 'c', 'c', 'e', 'e', 'b', 'b']
import itertools
ll = list(itertools.chain.from_iterable((e, e) for e in l))
職場で:
>>> import itertools
>>> l = ['a', 'c', 'e', 'b']
>>> ll = list(itertools.chain.from_iterable((e, e) for e in l))
>>> ll
['a', 'a', 'c', 'c', 'e', 'e', 'b', 'b']
Lattyware が指摘したように、要素を 2 倍以上にしたい場合は、次のようにします。
from itertools import chain, repeat
ll = list(chain.from_iterable(repeat(e, 2) for e in l))
これを試して
for i in l:
ll.append(i)
ll.append(i)
それはあなたの仕事をするだけですが、これを行うための最適化された方法ではありません。
アンを使用します。投稿者 @Steven Rumbalski
これはかなり簡単な方法です:
sum(zip(l, l), tuple())
各アイテムを複製し、タプルに追加します。タプルが必要ない場合は(私が推測するように)、list
タプルを呼び出すことができます:
list(sum(zip(l, l), tuple()))
いくつかの他のバージョン (リストを生成する):
list(sum(zip(l, l), ()))
sum([list(i) for i in zip(l, l)], [])
sum(map(list, zip(l, l)), [])