Создайте список повторяющихся значений и отредактируйте его с помощью цикла - PullRequest
0 голосов
/ 25 октября 2018

Я хочу создать список с n элементами.Все элементы одинаковы.Затем мне нужно изменить значения, используя для цикла .Вот мой код:

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 голосов
/ 25 октября 2018

Попробуйте:

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)
0 голосов
/ 25 октября 2018

Проблема в том, что у вас есть копия того же базового списка.

Попробуйте что-то вроде:

array = [[0, False] for i in range(n)]

Возможно, есть лучший способ, идея в том, чтобы создать новыйсписок для каждой записи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...