3

私はプロジェクトに取り組んでおり、リスト内のリストを特定の回数繰り返す必要があります。明らかに、L.append(L)個別のリストを作成せずに要素を再度追加するだけです。大きなリスト内でリストを分離する方法に困惑しています。

要するに、これは私が持っているものです:

L = [1,2,3,4,5]

それを 3 回繰り返したい場合は、次のようにします。

L = [[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5]]

どうすればこれを達成できますか? 大きなリスト内のリストを探しています。

4

1 に答える 1

10

関数は必要ありません:

>>> L = [1,2,3,4,5]
>>> [L]*3
[[1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]]

ただし、いずれかのリストで 1 つの値を変更すると、同じオブジェクトを参照するため、他のすべての値が変更されることに注意してください。

>>> mylist = [L]*3
>>> mylist[0][0] = 6
>>> print mylist
[[6, 2, 3, 4, 5], [6, 2, 3, 4, 5], [6, 2, 3, 4, 5]]
>>> print L
[6, 2, 3, 4, 5]

これを回避するには:

>>> L = [1,2,3,4,5]
>>> mylist = [L[:] for _ in range(3)]
>>> mylist[0][0] = 6
>>> print L
[1, 2, 3, 4, 5]
>>> print mylist
[[6, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]]

Lどのように変化せず、最初のリストのみが変化したかに注目してくださいmylist

助けてくれたコメントのみんなに感謝します:)。

于 2013-04-19T01:39:24.553 に答える