0

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]]

私は何を間違っていますか?手伝ってくれてどうもありがとう

4

3 に答える 3

1

あなたがするとき

x=[[0,0]]*10

10 個の異なる要素を作成するのではなく、同じ要素への参照を 10 回コピーするだけです。実際に必要なのは

x=[[i,0] for i in range(10)]
于 2013-11-11T12:08:40.533 に答える
1

これはあなたがやろうとしていることですか?

>>> [[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']]
于 2013-11-11T12:08:05.420 に答える