@henkwhite
Начинающий питонист

Почему через list.append() добавляются абсолютно левые числа?

Здравствуйте! Данный код просто перебирает числа от 111 до 999 и если 3 цифры дают в сумме 15 - отсылает такой набор в список square (по-идее должен отсылать), но в итоге список square получается из 61 списка по [9,9,9]. Хотя если заменить метод аппенд на просто print( l ), то все правильно выводится. Подскажите, пожалуйста, в чем тут может быть дело. Спасибо!
def work():
    l=[0,0,0]
    square=[]
    for i in range(1,10):
        l[0]=i
        for j in range(1,10):
            l[1]=j
            for q in range(1,10):
                l[2]=q
                if sum(l)==15:
                    square.append(l)
                
    return square
print(work())
  • Вопрос задан
  • 187 просмотров
Решения вопроса 2
@AWEme
Retard Soft Inc.
Вы добавляете в список square один и тот же объект, а затем меняете его.
В строке square.append(l) нужно указать, что вы добавляете копию списка: square.append(l[:])
Ответ написан
@lemme
Frontend
Дак массив же по ссылке передается.
Т.е меняется один и добавляется один и тот же объект.

a = [0, 1, 2]
b = a

a[0] = 100500

print(b)  # [100500, 1, 2]


Нужно создать новый экземпляр массива в момент аппенда, например так list(l)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы