これはPythonにショートカットがあるようです。私はこれを効果的に行う、リストN倍に項目を追加したい:Python:リストにN回追加する
l = []
x = 0
for i in range(100):
l.append(x)
そのための「最適化」の方法がなければならないことを私には思われる、のようなもの:
l.append_multiple(x, 100)
をある?
これはPythonにショートカットがあるようです。私はこれを効果的に行う、リストN倍に項目を追加したい:Python:リストにN回追加する
l = []
x = 0
for i in range(100):
l.append(x)
そのための「最適化」の方法がなければならないことを私には思われる、のようなもの:
l.append_multiple(x, 100)
をある?
でこれを行うことができます:参照することによって保存され、サブリストのように(後で修正することを望むかもしれない値の場合
l = [0] * 100
# [0, 0, 0, 0, 0, ...]
l = ['foo'] * 100
# ['foo', 'foo', 'foo', 'foo', ...]
、またはdicts):
l = [{} for x in range(100)]
(第1の方法が定数値のための良い考えである理由、lik文字列は<list>*<number>
のシンタックスを使用すると浅いコピーしかないので、[{}]*100
のようなものを作成した場合は、同じ辞書への参照が100になります。そのうち1つを変更するとすべてが変更されます。 intと文字列は不変なので、これは問題ではありません)。
既存のリストに追加する場合は、上記の手法で追加するもの):
a = [1,2,3]
b = [4,5,6]
a.extend(b)
# a is now [1,2,3,4,5,6]
@smihael er、そうですか? http://ideone.com/SffARE – Amber
または両方の提案を 'a.extend(b * n)'の形式に組み合わせてください。ここで 'n'はbの要素を繰り返す時間です – DarkCygnus
あなたは不変のデータ型についてはリスト内包
l = [x for i in range(10)];
Itertoolsのリピートとリストの拡張を組み合わせたもの。
from itertools import repeat
l = []
l.extend(repeat(x, 100))
私は割り当てのために別のルートに行かなければなりませんでしたが、これは私が終わったものです。
my_array += ([x] * repeated_times)
私の状況に最も適しているので、 'l.extend([x] * 100)'で終了しました。アンバーは最も包括的であるという答えを得ています。ありがとう! – Toji
Pythonのリファレンスセマンティクスを理解してから、これを自明でないものに使用する前に確認してください。 lに付け加えられたxはすべて同じxなので、そのうちの1つを変更すると、それらのすべてに影響を与えます(それらのすべてが100回と呼ばれます)。 –
説明のために:私は整数のために使用していますので、私の使い方は安全です。 – Toji