在python列表理解中解压元组(
问题描述:
)我想创建一个基于另一个列表的列表,连续重复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 ]
这样的东西可以完美解开元组,但这不是一个正确的语法。
答
在列表理解中,您不能使用*
迭代解包,该语法仅在调用中可用,并且在Python 3中使用赋值时才可用。
如果你想使用列表理解,只需将你的for
循环串联;您确实想直接从my_list
获取值,而不是直接生成索引:
[v for v in my_list for _ in range(3)]