创建重复值列表并使用循环对其进行编辑

时间:2018-10-25 11:59:05

标签: python list

我想创建一个包含 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]行不更改元素?

2 个答案:

答案 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)