我正在尝试初始化一个二维(3x3)列表而不键入所有元素,因为它们都是相同的.
但是,似乎只有这个矩阵的第一行真的被创建为一个新对象,而后续行只是对第一行的引用.
我怎么能创建所有行都是独立的对象?
这是一个例子来说明这一点:
# Create a bi-dimentional list a=[[''] * 3] * 3 print a >>>[['', '', ''], ['', '', ''], ['', '', '']] # change a single element, on first line # notice that it will change also the elements at other lines a[0][1] = 'x' print a [['', 'x', ''], ['', 'x', ''], ['', 'x', '']]
Delgan.. 5
你可以使用range()
:
a = [[''] * 3 for _ in range(3)]
使用*
list(更常见的是使用对象)实际上只是创建引用,您必须创建新列表.
你可以使用range()
:
a = [[''] * 3 for _ in range(3)]
使用*
list(更常见的是使用对象)实际上只是创建引用,您必须创建新列表.