2017-08-26 132 views

回答

2

的東西,或多或少的說:「我不想重複每個元素兩次」,有嵌套列表理解與range

>>> l = ['a', 'b', 'c'] 
>>> [x for x in l for _ in range(2)] 
['a', 'a', 'b', 'b', 'c', 'c'] 

你可以把它用,如果你的列表乘一點點短髮現更易讀,也不會需要擴展2了大量與列表理解轉換爲發電機的表達:

>>> l = ['a', 'b', 'c'] 
>>> [y for x in l for y in [x, x]] 

如果你是哈斯克爾的粉絲,其中竟被l >>= replicate 2 d工作,你可以模仿的是:

import itertools 
from functools import partial 
from operator import mul 


def flat_map(iterable, f): 
    return itertools.chain.from_iterable(map(f, iterable)) 


l = ['a', 'b', 'c'] 
flat_map(l, partial(mul, 2)) 
+0

你知道這個答案的運行速度比我的快呢?只是好奇,謝謝。 – KillPinguin

+0

@KillPinguin:我不會,對不起。 – Ryan

1

你總是可以創建一個新的列表:

for x in oldList: 
    newList.append(x) 
    newList.append(x) 

注意,這將創建一個新的列表,而不是修改舊的!

1
source = ['a','b','c'] 
result = [el for el in source for _ in (1, 2)] 
print(result) 

給你

['a', 'a', 'b', 'b', 'c', 'c'] 
相關問題