これは 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]