1. ホーム
  2. python

[解決済み] Python リストに項目をN回追加する

2022-10-02 10:49:29

質問

これは、Pythonがショートカットを持っているようなものです。私はリストにN回アイテムを追加したい、効果的にこれを行う。

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

そのための "optimized" のようなメソッドがあってもよさそうなものです。

l.append_multiple(x, 100)

ありますか?

どのように解決するのですか?

immutableなデータ型の場合。

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

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

参照によって保存され、後で修正したいような値のために(サブリストやディクショナリなど)。

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

(最初の方法がintや文字列のような定数値に対してのみ良いアイデアである理由は、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]