これは、Pythonにショートカットがあるようです。アイテムをリストにN回追加して、効果的にこれを実行したいと思います。
l = []
x = 0
for i in range(100):
l.append(x)
そのための「最適化された」方法があるべきだと私には思えます。
l.append_multiple(x, 100)
ある?
これは、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', ...]
参照によって保存され、後で変更したい場合がある値(サブリストやdictなど)の場合:
l = [{} for x in range(100)]
(最初の方法がintやstringsなどの定数値にのみ適している理由は、<list>*<number>
構文を使用するときに浅いコピーしか実行されないためです。したがって、のような[{}]*100
ことを行うと、100個の参照が発生することになります。同じ辞書に-したがって、それらの1つを変更すると、すべてが変更されます。intとstringは不変であるため、これは問題にはなりません。)
既存のリストに追加する場合はextend()
、そのリストの方法を使用できます(上記の手法で追加するもののリストの生成と組み合わせて)。
a = [1,2,3]
b = [4,5,6]
a.extend(b)
# a is now [1,2,3,4,5,6]
a.extend(b*n)
どこn
l.extend([x] * 100)
それが私の状況に最もよく合うので、結局はうまくいきました。琥珀は、最も包括的であるための答えのクレジットを取得します。ありがとう!