在python列表理解中解包元组(不能使用*-运算符)

2024-04-26 17:24:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图根据另一个列表创建一个列表,相同的值连续重复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 ]这样的东西对于解包元组来说是完美的,但是这不是一个正确的语法。


Tags: 方法in列表forlenvaluemy方式
1条回答
网友
1楼 · 发布于 2024-04-26 17:24:05

在列表理解中不能使用*iterable unpacking,该语法仅在调用和Python 3中使用赋值时可用。

如果要使用列表理解,只需将for循环放在序列中;您确实希望直接访问my_list中的值,而不是生成索引,尽管:

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

相关问题 更多 >