我想创建一个包含 n 个元素的列表。所有元素都相同。然后,我需要使用 for循环更改值。这是我的代码:
n = 4
array = [[0, False]] * n
print(array)
count = 1
for a in array:
if a[0] == 0:
a[0] = count
a[1] = True
count += 1
print(array)
我得到的结果是:
[[0, False], [0, False], [0, False], [0, False]]
[[1, True], [1, True], [1, True], [1, True]]
但是我希望得到:
[[0, False], [0, False], [0, False], [0, False]]
[[1, True], [2, True], [3, True], [3, True]]
为什么a = [count, True]
行不更改元素?
答案 0 :(得分:4)
问题是您拥有相同基础列表的副本。
尝试类似的东西:
array = [[0, False] for i in range(n)]
可能有更好的方法,其想法是为每个条目创建一个新列表。
答案 1 :(得分:0)
尝试一下:
n = 4
array = [[0, False]] * n
print(array)
newarray = []
for a in array:
a[0] += 1
a[1] = True
new = [str(a[0]) + '' ,'' + str(a[1])]
newarray.append(new)
for b in newarray:
b[0] = int(b[0])
b[1] = bool(a[1])
print(newarray)