Найти - Пользователи
Полная версия: Проход вложенных списков циклами
Начало » Python для новичков » Проход вложенных списков циклами
1
Hait
Добрый день. Пытаюсь обойти матрицу при помощи циклов. Но получается какая-то белиберда. На каждой итерации изменяется элемент не только i-ой строки по номеру j, но и j-е элементы других строк.
Прикладываю циклы и код генерации (знаком только с с/с++, т.ч. возможно что-то не понимаю в синтаксисе)

 out = [[0] * len(arr[0])] * len(arr)
for i in range(len(arr)):
    for j in range(len(arr[0])):
        out[i][j] += arr[i - 1][j]
        out[i][j] += arr[(i + 1) % len(arr)][j]
        out[i][j] += arr[i][j - 1]
        out[i][j] += arr[i][(j + 1) % len(arr[0])]
FishHook
Hait
Список - ссылочный тип, размножая список в первой строке вы просто копируете ссылку - получаете N переменных ссылающихся на один и тот же экземпляр списка.
Hait
FishHook
HaitСписок - ссылочный тип, размножая список в первой строке вы просто копируете ссылку - получаете N переменных ссылающихся на один и тот же экземпляр списка.
А есть тогда красивый способ создать списки определенных размеров?
FishHook
Hait
Красиво и явно одновременно сделать что-то сложное довольно трудно. Здесь соперничают разные концепции дзена
Красивое лучше, чем уродливое.
Явное лучше, чем неявное.
Простое лучше, чем сложное.
Сложное лучше, чем запутанное.
Плоское лучше, чем вложенное.
Разреженное лучше, чем плотное.
……..
пишите цикл и не парьтесь
FishHook
Ну или списковое выражение
 out = [[0] * len(arr[0]) for _ in arr]
PEHDOM
Hait
А есть тогда красивый способ создать списки определенных размеров?
 >>> [[0 for j in range(3)] for i in range(4)]
[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]
вобщем гугли генераторы списков/словарей в пайтоне http://pythonicway.com/education/basics/16-python-lists-intermediate
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB