2016-05-17 63 views
2

)我想創建一個基於另一個列表的列表,連續重複3次相同的值。在python列表理解中解壓元組(

目前,我使用:

>>> my_list = [ 1, 2 ] 
>>> three_times = [] 
>>> for i in range(len(my_list)): 
... for j in range(3): 
...  three_times.append(my_list[ i ]) 
... 
>>> print three_times 
[1, 1, 1, 2, 2, 2] 

但我想這樣做使用更Python的方式,如:

>>> my_list = [ 1, 2 ] 
>>> three_times = [] 
>>> three_times = [ (value,) * 3 for value in my_list ] 
>>> print three_times 
[(1, 1, 1), (2, 2, 2)] 

不過,我不能找到一種方法,解壓元組。

three_times = [ *((value,) * 3) for value in my_list ]這樣的東西可以完美解開元組,但這不是一個正確的語法。

回答

7

在列表理解中,您不能使用*迭代解包,該語法僅在調用中可用,並且在Python 3中使用賦值時纔可用。

如果你想使用列表理解,只需將你的for循環串聯;您確實想直接從my_list獲取值,而不是直接生成索引:

[v for v in my_list for _ in range(3)]