аналогия двумерного массива С в Python

В С я, для вывода каждого элемента двумерного массива пишу следующий код:

for (int i=0; i<N; i++)
{
    for(int j=0; j<N;j++){
        printf("%d", a[i][j]);
    }
    printf("/n");
}

Как это интерпритировать в Python .


Ответы (2 шт):

Автор решения: Danis

попробуйте так:

for i in range(N):
    for j in range(N):
        print(a[i][j], end = " ")
    print()

либо так:

for i in range(N):
    print(*arr[i])
→ Ссылка
Автор решения: Stanislav Volodarskiy

В Питоне принято избегать обращения к спискам (тут массивы так называют) по индексам. Дословный перевод вашей программы с C (с некоторыми исправлениями, так как ваш код работает не так как вы представляете) будет таким:

for row in a:
    for v in row:
        print(v, end=' ')
    print()

Это не самый лучший способ. Лишние пробелы в конце строк - неаккуратно. Лучше печатать строку целиком. С точки зрения программиста на C тут перерасход памяти под строку. С точки зрения питониста все отлично. map применяет str ко всем элементам row, делая из них строки. join склеивает строки через пробелы:

for row in a:
    print(' '.join(map(str, row)))

Кроме прямой строковой обработки можно воспользоваться хитростью, которую предоставляет функция print. Синаксис f(*lst) означает "преврати список lst в аргументы функции f". Это именно хитрость, далеко на ней не уедешь, но знать её надо:

for row in a:
    print(*row)
→ Ссылка