2016-05-17 1 views
2

同じ値を3回連続して繰り返し、別のリストに基づいてリストを作成しようとしています。現時点でPythonリストの解説でタプルを展開する(* -operatorの使用に失敗します)

、私が使用しています:

>>> 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)] 
関連する問題