Python でループを使用してリストのリストを定義しようとしています。次のリストを作成したいと思います。
x=[[0,0],[1,0],[2,0],...,[9,0]]
これが基本的に私がしていることです:
x=[[0,0]]*10
for i in range(10):
x[i][0]=i
print x
ただし、次のリストになります。
x=[[9,0],[9,0],[9,0],...,[9,0]]
私は何を間違っていますか?手伝ってくれてどうもありがとう
あなたがするとき
x=[[0,0]]*10
10 個の異なる要素を作成するのではなく、同じ要素への参照を 10 回コピーするだけです。実際に必要なのは
x=[[i,0] for i in range(10)]
これはあなたがやろうとしていることですか?
>>> [[i, 0] for i in range(10)]
[[0, 0], [1, 0], [2, 0], [3, 0], [4, 0], [5, 0], [6, 0], [7, 0], [8, 0], [9, 0]]
あなたがしていたことのどこが間違っていたかというと、あなたはリストを作成していたのに、 を使って*それ以上作成していたのではなく、リストへの参照を増やしていたということです。これは、リストを変更するたびに を変更していたことを意味します。毎回同じリスト。
>>> a = [[]]*10
>>> a
[[], [], [], [], [], [], [], [], [], []]
>>> a[0].append('X')
>>> a
[['X'], ['X'], ['X'], ['X'], ['X'], ['X'], ['X'], ['X'], ['X'], ['X']]