Реклама ООО Таймвэб
Реклама ООО Таймвэб
Реклама ООО Таймвэб

Двумерные массивы в Python и методы работы с ними

3 комментария
Двумерные массивы в Python и методы работы с ними

Иногда нам приходится использовать таблицы с данными для решения своих задач. Такие таблицы называются матрицами или двумерными массивами.

В Python подобные таблицы можно представить в виде списка, элементы которого являются другими списками. Для примера создадим таблицу с тремя столбцами и тремя строками, заполненными произвольными буквами:

mas = [['й', 'ц', 'у'], ['к','е','н'], ['г', 'ш', 'щ']] 
#Вывод всего двумерного массива 
print(mas) 
#Вывод первого элемента в первой строке 
print(mas[0][0]) # Выведет й 
#Вывод третьего элемента в третьей строке 
print(mas[2][2]) # Выведет щ 

Создание двумерных массивов

Создать такой массив в Python можно разными способами. Разберем первый:

# Создание таблицы с размером 3x3, заполненной нулями
a = 3           
mas = [0] * a 
for i in range(a): 
    mas[i] = [0] * a 
print(mas) # Выведет [[0, 0, 0], [0, 0, 0], [0, 0, 0]]     

Второй способ предполагает создание пустого списка с добавлением в него новых списков. Рассмотрим на примере:

# Создание таблицы с размером 2x2, заполненной единицами
a = 2
mas = [] 
for i in range(a): 
    mas.append([0] * a)
print(mas) # Выведет [[1, 1, 1], [1, 1, 1], [1, 1, 1]]                                 

Третьим и самым простым способом является генератор списков с x строками, которые будут состоять из y элементов. Пример: 

# Создание таблицы с размером 3x3, заполненной двойками
a = 3
mas = [[2] * a for i in range(a)]
print(mas) # Выведет [[2, 2, 2], [2, 2, 2], [2, 2, 2]]
Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей
Подписаться

Способы ввода двумерных массивов

Допустим, нам нужно ввести двумерный массив после запуска нашей программы. Для этого мы можем создать программу, которая будет построчно считывать значения нашего массива, а также количество строк в нем. Рассмотрим на примере:

a=int(input())
mas = [] 
for i in range(a): 
    mas.append(list(map(int, input().split())))
print(mas) 

Запускаем программу и сначала вводим количество строк в массиве (допустим, 3). Далее вводим строки в порядке их очереди. Например:

1 1 1
1 1 1
1 1 1

После этого данная программа выведет наш двумерный массив: [[1, 1, 1], [1, 1, 1], [1, 1, 1]].

То же самое можно сделать с помощью генератора двумерных массивов:

mas = [list(map(int, input().split())) for i in range(int(input()))]
# Вводим 
3
1 1 1
1 1 1
1 1 1
print(mas) # Выведет [[1, 1, 1], [1, 1, 1], [1, 1, 1]]

Вывод двумерных массивов

Для обработки и вывода списков используются два вложенных цикла. Первый цикл – по порядковому номеру строки, второй – по ее элементам. Например, вывести массив можно так:

mas = [[1, 1, 1], [1, 1, 1], [1, 1, 1]]
for i in range(0, len(mas)):
    for i2 in range(0, len(mas[i])):
        print(mas[i][i2], end=' ')
    print()
# Выведет
1 1 1
1 1 1
1 1 1

То же самое можно сделать не по индексам, а по значениям массива:

mas = [[1, 1, 1], [1, 1, 1], [1, 1, 1]]
for i in mas: 
    for i2 in i: 
        print(i2, end=' ') 
    print()
# Выведет
1 1 1
1 1 1
1 1 1

Способ с использованием метода join():

mas = [[1, 1, 1], [1, 1, 1], [1, 1, 1]]
for i in mas: 
    print(' '.join(list(map(str, i))))
# Выведет
1 1 1
1 1 1
1 1 1

Вывод одной из строк двумерного массива можно осуществить с помощью цикла и того же метода join(). Для примера выведем вторую строку в произвольном двумерном массиве:

mas = [[1, 1, 1], [2, 2, 2], [3, 3, 3]]
string = 2
for i in mas[string-1]:
    print(i, end=' ')
# Выведет 1 1 1

Для вывода определенного столбца в двумерном массиве можно использовать такую программу:

mas = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
column = 2
for i in mas:
    print(i[column-1], end=' ')
# Выведет 2 5 8

Обработка двумерных массивов

Составим произвольный двумерный массив с числами и размерностью 4x4:

2 4 7 3
4 5 6 9
1 0 4 2
7 8 4 7

Теперь поставим числа в каждой строке по порядку:

mas = [[2, 4, 7, 3], [4, 5, 6, 9], [1, 0, 4, 2], [7, 8, 4, 7]]
mas2 = []
for i in mas:
    mas2.append(sorted(i))
print(mas2)
# Выведет [[2, 3, 4, 7], [4, 5, 6, 9], [0, 1, 2, 4], [4, 7, 7, 8]]

А теперь расставим все числа по порядку, вне зависимости от их нахождения в определенной строке:

mas = [[2, 4, 7, 3], [4, 5, 6, 9], [1, 0, 4, 2], [7, 8, 4, 7]]
mas2 = []
for i in mas:
    for i2 in i:
        mas2.append(i2)
mas=sorted(mas2)
for x in range(0, len(mas), 4):
    e_c = mas[x : 4 + x]
    if len(e_c) < 4:
        e_c = e_c + [None for y in range(n - len(e_c))]
    print(list(e_c))
# Выведет
[0, 1, 2, 2]
[3, 4, 4, 4]
[4, 5, 6, 7]
[7, 7, 8, 9]

Итог

Мы разобрались в основах двумерных массивов в Python, научились создавать, вводить и выводить их, а также рассмотрели примеры обработки. Надеюсь, статья оказалась полезной для вас!

Hello World! Гайды и обзоры для девелоперов разных мастей.

Комментарии

Модератор
Пришел кот и стер лапкой этот комментарий
Антон Азаров +2
09 апр в 2022
# Создание таблицы с размером 2x2, заполненной единицами
a = 2
mas = []
for i in range(a):
mas.append([0] * a)
print(mas) # Выведет [[1, 1, 1], [1, 1, 1], [1, 1, 1]]

После этого дальше читать не стал..
Илья Романов 0
24 сен в 2023
mas = [[2, 4, 7, 3], [4, 5, 6, 9], [1, 0, 4, 2], [7, 8, 4, 7]]
lst = []
for i in mas:
lst += i
lst = sorted(lst)
mas_2 = []
for i in range(0, len(lst), 4):
mas_2.append(lst[i:i + 4])
Возможно не так понятно, но короткий вариант второго примера.
Денис Шангуров 0
24 дек в 2023
# Создание таблицы с размером 2x2, заполненной единицами
a = 2
mas = []
for i in range(a):
mas.append([0] * a)
print(mas) # Выведет [[1, 1, 1], [1, 1, 1], [1, 1, 1]]

Это не верно, выведет: [[0, 0], [0, 0]]

в последнем примере:
if len(e_c) < 4:
e_c = e_c + [None for y in range(n - len(e_c))]
эти строки в примере вообще не выполнятся. однако даже если будет часть массива в которой будет меньше 4-х элементов, мы получим ошибку, так как n не определена, возможно вы хотели так написать чтобы выровнять массив None'ами:
e_c = e_c + [None for y in range(4-len(e_c))]
С помощью соцсетей
У меня нет аккаунта Зарегистрироваться
С помощью соцсетей
У меня уже есть аккаунт Войти
Инструкции по восстановлению пароля высланы на Ваш адрес электронной почты.
Пожалуйста, укажите email вашего аккаунта
Ваш баланс 10 ТК
1 ТК = 1 ₽
О том, как заработать и потратить Таймкарму, читайте в этой статье
Чтобы потратить Таймкарму, зарегистрируйтесь на нашем сайте