用Python中的循环定义列表列表

用Python中的循环定义列表列表,python,list,Python,List,我试图用Python定义一个带有循环的列表列表。 我想构建以下列表: x=[[0,0],[1,0],[2,0],...,[9,0]] x=[[9,0],[9,0],[9,0],...,[9,0]] 我基本上是这样做的: x=[[0,0]]*10 for i in range(10): x[i][0]=i print x 但是,我最后给出了以下列表: x=[[0,0],[1,0],[2,0],...,[9,0]] x=[[9,0],[9,0],[9,0],...,[9,0]] 我

我试图用Python定义一个带有循环的列表列表。 我想构建以下列表:

x=[[0,0],[1,0],[2,0],...,[9,0]]
x=[[9,0],[9,0],[9,0],...,[9,0]]
我基本上是这样做的:

x=[[0,0]]*10
for i in range(10):
    x[i][0]=i
print x
但是,我最后给出了以下列表:

x=[[0,0],[1,0],[2,0],...,[9,0]]
x=[[9,0],[9,0],[9,0],...,[9,0]]

我做错了什么?非常感谢您的帮助

这就是您想要做的吗

>>> [[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']]
当你这样做的时候

x=[[0,0]]*10
您不是在创建10个不同的元素,而是简单地将对同一元素的引用复制10次。你真正需要的是

x=[[i,0] for i in range(10)]
用这个,

a=[[0,i] for i in range(10)]
print a
输出如下所示:

[[0, 0], [0, 1], [0, 2], [0, 3], [0, 4], [0, 5], [0, 6], [0, 7], [0, 8], [0, 9]]

您正在创建对同一列表的重复引用,而不是10个新列表<代码>[[i,0]对于范围(10)内的i]将创建新的嵌套列表。所有注释和答案都非常有用和有指导意义。非常感谢你的帮助。