Python: リストにアイテムをN回追加する 質問する

Python: リストにアイテムをN回追加する 質問する

これは Python のショートカットのように思えます。リストに項目を N 回追加したいのですが、実際には次のようにします。

l = []
x = 0
for i in range(100):
    l.append(x)

私には、そのためには次のような「最適化された」方法があるはずだと思われます。

l.append_multiple(x, 100)

ありますか?


要素を追加したい場合別のシーケンスから(同じ値を繰り返し使用する代わりに、.extendそのシーケンスを直接使用することもできます。空のリストの末尾に追加するにはどうすればよいですか?

ベストアンサー1

不変データ型の場合:

l = [0] * 100
# [0, 0, 0, 0, 0, ...]

l = ['foo'] * 100
# ['foo', 'foo', 'foo', 'foo', ...]

参照によって保存され、後で変更する可能性がある値(サブリストや辞書など)の場合:

l = [{} for x in range(100)]

(最初の方法が int や文字列などの定数値にのみ適している理由は、<list>*<number>構文を使用する場合、浅いコピーのみが行われるため、 のような操作を行うと[{}]*100、同じ辞書への参照が 100 個になるので、そのうちの 1 つを変更するとすべてが変更されるからです。int と文字列は不変なので、これは問題になりません。)

既存のリストに追加したい場合は、extend()そのリストのメソッドを使用できます (上記の手法による追加する項目のリストの生成と組み合わせて)。

a = [1,2,3]
b = [4,5,6]
a.extend(b)
# a is now [1,2,3,4,5,6]

おすすめ記事