我试图基于另一个列表创建一个列表,将相同的值连续重复3次。
目前,我正在使用:
>>> 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 ]这样的东西对于解开元组是完美的,但这不是正确的语法。
three_times = [ *( (value,) * 3 ) for value in my_list ]
您不能*在列表推导中使用可迭代的拆包,该语法仅在使用赋值时才在调用中以及在Python 3中可用。
*
如果要使用列表推导,只需for串联循环即可;您确实想my_list直接从中访问值,而不是生成索引:
for
my_list
[v for v in my_list for _ in range(3)]