- Массивы в python
- Массивы в Python.
- Работа с массивами с заданным размером в Python
- Работа с массивами с изменяемым размером в python
- №18 Массивы / Уроки по Python для начинающих
- Что такое массив?
- Доступ к элементам массива
- Длина массива
- Циклы элементов массива
- Добавление элементов массива
- Удаление элементов массива
- Методы массива
- Массивы в Python
- Модуль массива Python
- 1. Создание массива
- 2. Вывод
- 3. Печать элементов массива
- 4. Вставка и добавление элементов
- 5. Массив поддерживает отрицательный индекс
- 6. Удаление элементов
- 7. Нарезка
- 8. Поиск элемента
- 9. Обновление значения по указанному индексу
- 10. Перевернуть элементы в обратном порядке
- 11. Подсчет количества элементов
- 12. Расширение путем добавления объекта Iterable
- 13. Преобразование массива в список
- Массивы
- Общее представление о массиве
- Обход массива
- Операции на массиве
- Ввод-вывод массива
- Двумерные массивы
- Операции над двумерным массивом
- Обход двумерного массива
- Создание пустого массива
- Ввод-вывод двумерного массива
- Многомерные массивы
Массивы в python
Массивы в Python.
Зачастую в программах необходимо хранить и обрабатывать большое количество данных об объектах одного типа. В этом случае удобно использовать массивы. Массив — это набор объектов одного типа под общим именем (имя массива). Каждый объект (элемент массива) имеет свой номер (индекс), с помощью которого мы обращаемся к этому элементу массива.
Работа с массивами с заданным размером в Python
Объявление массива в Python известного размера
Массив с определенным числом элементов N в Python объявляется так, при этом всем элементам массива присваивается нулевое значение
Название массива = [0]*N
Задание значений элементов массива в python.
Задать значение элементов массива можно при объявлении массива. Это делается так
Название массива = [элемент №1, элемент №2, элемент №3,…]
Название массива[индекс элемента массива] = значение элемента
При этом массив будет иметь фиксированный размер согласно количеству элементов.
Пример. Задание значений элементов массива в Python двумя способами.
Способ №1.
a = [0, 1, 2, 3, 4]
Способ №2.
a[0] = 0
a[1] = 1
a[2] = 2
a[3] = 3
a[4] = 4
Таблица основных типов данных в Python.
При работе с массивами удобно использовать цикл for для перебора всех элементов массива.
a = [0] * размер массива
for i in range(размер массива):
a[i] = выражение
Размер массива в Питон можно узнать с помощью команды len(имя массива)
Пример программы на Python, которая вводит массив с клавиатуры, обрабатывает элементы и выводит на экран измененный массив С клавиатуры вводятся все элементы массива, значения элементов увеличиваются в два раза. Выводим все значения элементов в консоль. Чтобы элементы массива выводились в одну строку через пробел, используем параметр end =» » в операторе вывода на экран print(a[i], end = » «)
a = [0] * 4
for i in range(len(a)):
i = str(i + 1)
print(«Введите элемент массива » + i, end = » «)
i = int(i)
i = i — 1
a[i] = int(input())
print(«»)
for i in range(len(a)):
a[i] = a[i] * 2
for i in range(len(a)):
print(a[i], end = » «)
Алгоритм поиска минимального значения массива в python
Нужно перебрать все элементы массива и каждый элемент сравнить с текущим минимумом. Если текущий элемент меньше текущего минимума, то этот элемент становится текущим минимумом.
Алгоритм поиска максимального значения массива в python.
Аналогично, для поиска максимального значения нужно перебрать и сравнить каждый элемент с текущим максимумом. Если текущий элемент больше текущего максимума, то текущий максимум приравнивается к этому элементу.
Пример. Программа запрашивает значения элементов массива и выводит минимальное и максимальное значения на экран.
a = [0] * 9
for i in range(len(a) — 1):
i = str(i + 1)
print(«Введите элемент массива » + i, end = » «)
i = int(i)
a[i] = int(input())
min = a[0]
max = a[0]
for i in range(len(a)):
if (a[i ] max):
max = a[i]
min = str(min)
max = str(max)
print(«Минимальное значение = » + min)
print(«Максимальное значение = » + max)
Работа с массивами с изменяемым размером в python
Как правило в программах Python размер массива не четко задан, может вводиться с клавиатуры, может изменяться и размер массива, элементы могут добавляться и удаляться.
Для работы с массивами изменяемого размера в Python используется специальное объявление массива
Объявление массива с неизвестным числом элементов в python
Имя массива=[]
Задание массива явно
Имя массива=[значение первого элемента, значение второго,….]
Вывод всего массива в python
print(имя массива)
Например
a=[]
a=[10,2,3]
print(a)
[10, 2, 3]
Добавление элемента в конец массива вpython
Имя массива.append(значение)
Например
a=[]
a=[10,2,3]
print(a)
a.append(7)
print(a)
будет выведено на экран
[10, 2, 3]
[10, 2, 3, 7]
Ввод массива с клавиатуры в python
Для ввода массива с неизвестным числом элементов в python в программе запрашивается чилсо элементов, а затем в цикле for добавляется элементы с помощью команды имямассива.append()
a=[]
n=int(input())
for i in range(n):
a.append(int(input()))
print(a)
Для определения длины массива в python используется команда len(имя массива)
Вывод поэлементно массива на экран в Python
Вывод массива неизвестной длины осуществляется в цикле for, верхняя граница цикла определятся с помощью команды len(имя массива)
for i in range(len(a)):
print(a[i])
Для удаления элемента массива в python используется команда
Имя массива.remove(номер элемента который нужно удалить)
Например
a=[]
a=[1,2,3]
print(a)
a.remove(1)
print(a)
выведет на экран
[1, 2, 3]
[2, 3]
Сортировка массива в python
Для сортировки числового массива по возрастанию в python используется команда
имя массива.sort()
Пример программы на Python ввода массива, вывода массива и сортировки массива
a=[]
n=int(input())
for i in range(n):
a.append(int(input()))
print(‘массив’)
for i in range(len(a)):
print(a[i])
a.sort()
print(‘отсортированный массив’)
for i in range(len(a)):
print(a[i])
Вернуться к содержанию Следующая тема Работа с модулями в Питон
Источник
№18 Массивы / Уроки по Python для начинающих
Примечание: Python не имеет встроенной поддержки массивов, но вместо этого можно использовать списки (list) Python.
Массивы используются для хранения нескольких значений в одной переменной:
Что такое массив?
Массив — это специальная переменная, которая может содержать более чем одно значение.
Если у вас есть список предметов (например, список марок авто), то хранение автомобилей в отдельных переменных может выглядеть так:
Однако, что, если вы хотите проскочить через все машины и найти конкретную? А что, если у вас было бы не 3 автомобиля а 300?
Решение представляет собой массив!
Массив может содержать много значений под одним именем, и вы так же можете получить доступ к значениям по индексу.
Доступ к элементам массива
Вы ссылаетесь на элемент массива, ссылаясь на индекс.
Получим значение первого элемента массива:
Изменим значение первого элемента массива:
Длина массива
Используйте метод len() чтобы вернуть длину массива (число элементов массива).
Выведем число элементов в массиве cars :
Примечание: Длина массива всегда больше, чем индекс последнего элемента.
Циклы элементов массива
Вы можете использовать цикл for для прохода по всем элементам массива.
Выведем каждый элемент из цикла cars :
Добавление элементов массива
Вы можете использовать метод append() для добавления элементов в массив.
Добавим еще один элемент в массив cars :
Удаление элементов массива
Используйте метод pop() для того, чтобы удалить элементы из массива.
Удалим второй элемент из массива cars :
Так же вы можете использовать метод remove() для того, чтобы убрать элемент массива.
Удалим элемент со значением “Volvo”:
Примечание: Метод remove() удаляет только первое вхождение указанного значения.
Методы массива
В Python есть набор встроенных методов, которые вы можете использовать при работе с lists/arrays.
Метод | Значение |
---|---|
append() | Добавляет элементы в конец списка |
clear() | Удаляет все элементы в списке |
copy() | Возвращает копию списка |
count() | Возвращает число элементов с определенным значением |
extend() | Добавляет элементы списка в конец текущего списка |
index() | Возвращает индекс первого элемента с определенным значением |
insert() | Добавляет элемент в определенную позицию |
pop() | Удаляет элемент по индексу |
remove() | Убирает элементы по значению |
reverse() | Разворачивает порядок в списке |
sort() | Сортирует список |
Примечание: В Python нет встроенной поддержки для массивов, вместо этого можно использовать Python List.
Источник
Массивы в Python
Python не имеет явной структуры данных массива. Список содержит набор элементов и поддерживает операции добавления / обновления / удаления / поиска. Вот почему в Python не так часто используется отдельная структура данных для поддержки массивов.
Массив содержит элементы одного типа, но список Python допускает элементы разных типов. Это единственное различие между массивом и списком. Но это не нарушает условий и не требует поддержки новой структуры данных.
Однако модуль массива можно использовать для создания массива, подобного объекту, для целочисленных символов, символов с плавающей запятой и символов Юникода.
Модуль массива Python
Модуль массива Python позволяет нам создавать массив с ограничением типов данных. Этот модуль поддерживает только несколько типов данных.
Код типа Unicode устарел в Python 3.3 и будет удален в версии Python 4.0.
Итак, мы можем создать массив целых чисел и чисел с плавающей запятой, используя модуль массива.
1. Создание массива
Синтаксис для создания массива: array.array(typecode, values_list) .
2. Вывод
Если мы печатаем объект массива, он дает нам информацию о коде типа и его элементах. Давайте распечатаем созданные выше массивы, а также распечатаем тип объекта с помощью встроенной функции type().
3. Печать элементов массива
Мы можем печатать элементы массива с помощью цикла for.
Мы также можем получить доступ к элементу, используя его индекс. Мы можем использовать индексы для печати элементов массива.
4. Вставка и добавление элементов
Мы можем использовать функцию insert() для вставки элемента по указанному индексу. Элементы из указанного индекса сдвигаются вправо на одну позицию.
Вывод: array(‘i’, [-1, 1, -2, 2, 3, 4])
Если вам нужно добавить элемент в конец массива, используйте функцию append().
5. Массив поддерживает отрицательный индекс
Мы также можем получить доступ к элементам массива python через отрицательный индекс.
6. Удаление элементов
Мы можем использовать метод remove() для удаления элемента массива.
Если элемент отсутствует в массиве, возникает ошибка ValueError.
Вывод: array.remove(x): x not in array
Мы также можем использовать функцию pop() для удаления элемента по данному индексу. Эта функция возвращает элемент, удаляемый из массива. Если мы не указываем индекс, последний элемент удаляется и возвращается.
7. Нарезка
Массив Python поддерживает нарезку и возвращает новый массив с подэлементами. Исходный массив остается без изменений. Нарезка также поддерживает отрицательные индексы.
8. Поиск элемента
Мы можем использовать функцию index(), чтобы найти индекс первого вхождения элемента. Если элемент отсутствует в массиве, возникает ошибка ValueError.
9. Обновление значения по указанному индексу
Мы можем использовать индекс массива с оператором присваивания для обновления значения индекса. Если индекс недействителен, возникает IndexError.
10. Перевернуть элементы в обратном порядке
Мы можем использовать функцию reverse(), чтобы перевернуть элементы массива.
11. Подсчет количества элементов
Мы можем использовать функцию count(), чтобы получить количество вхождений значения в массив.
12. Расширение путем добавления объекта Iterable
Мы можем использовать функцию extend() для добавления значений из итерируемого объекта в конец массива.
13. Преобразование массива в список
Мы можем использовать функцию tolist() для преобразования массива в список.
Источник
Массивы
Часто в программах бывает надо работать с большим количество однотипных переменных. Например, пусть вам надо записать рост каждого человека в классе — это много целых чисел. Вы можете завести по одной переменной на каждого ученика, но это очень не удобно. Специально для этого придуманы массивы.
Общее представление о массиве
Массив (в питоне еще принято название «список», это то же самое) — это переменная, в которой хранится много значений. Массив можно представлять себе в виде такой последовательности ячеек, в каждой из которых записано какое-то число:
Значения, хранящиеся в массиве (говорят: элементы массива) нумеруются последовательно, начиная с нуля. На картинке выше числа внутри квадратиков — это значения, хранящиеся в массиве, а числа под квадратиками — номера этих элементов (еще говорят «индексы» элементов). Обратите внимание, что в массиве 6 элементов, но последний имеет номер 5, т.к. нумерация начинается с нуля. Это важно!
Соответственно, переменная теперь может хранить целиком такой массив. Создается такой массив, например, путем перечисления значений в квадратных скобках:
a = [7, 5, -3, 12, 2, 0]
Теперь переменная a хранит этот массив. К элементам массива можно обращаться тоже через квадратные скобки: a[2] — это элемент номер 2, т.е. в нашем случае это -3 . Аналогично, a[5] — это 0. В квадратных скобках можно использовать любые арифметические выражения и даже другие переменные: a[2*2-1] — это 12, a[i] обозначает «возьми элемент с номером, равным значению переменной i «, аналогично a[2*i+1] обозначает «возьми элемент с номером, равным 2*i+1», или даже a[a[4]] обозначает «возьми элемент с номером, равным четвертому элементу нашего массива» (в нашем примере a[4] — это 2 , поэтому a[a[4]] — это a[2] , т.е. -3 ).
Если указанный номер слишком большой (больше длины массива), то питон выдаст ошибку (т.е. в примере выше a[100] будет ошибкой, да и даже a[6] тоже). Если указан отрицательный номер, то тут действует хитрое правило. Отрицательные номера обозначают нумерацию массива с конца: a[-1] — это всегда последний элемент, a[-2] — предпоследний и т.д. В нашем примере a[-6] равно 7. Слишком большой отрицательный номер тоже дает ошибку (в нашем примере a[-7] уже ошибка).
С элементами массива можно работать как с привычными вам переменными. Можно им присваивать значения: a[3] = 10 , считывать с клавиатуры: a[3] = int(input()) , выводить на экран: print(a[3]) , использовать в выражениях: a[3+i*a[2]] = 3+abs(a[1]-a[0]*2+i) (здесь i — какая-то еще целочисленная переменная для примера), использовать в if’ах: if a[i]>a[i-2]: , или for a[2] in range(i) и т.д. Везде, где вы раньше использовали переменные, можно теперь использовать элемент массива.
Обход массива
Но обычно вам надо работать сразу со всеми элементами массива. Точнее, сразу со всеми как правило не надо, надо по очереди с каждым (говорят: «пробежаться по массиву»). Для этого вам очень полезная вещь — это цикл for . Если вы знаете, что в массиве n элементов (т.е. если у вас есть переменная n и в ней хранится число элементов в массиве), то это делается так:
например, вывести все элементы массива на экран:
или увеличить все элементы массива на единицу:
и т.п. Конечно, в цикле можно и несколько действий делать, если надо. Осознайте, что это не магия, а просто полностью соответствует тому, что вы знаете про работу цикла for.
Если же у вас нет переменной n , то вы всегда можете воспользоваться специальной функцией len , которая возвращает количество элементов в массиве:
for i in range(len(a)): .
Функцию len , конечно, можно использовать где угодно, не только в заголовке цикла. Например, просто вывести длину массива — print(len(a)) .
Операции на массиве
Еще ряд полезных операций с массивами:
- a[i] (на всякий случай повторю, чтобы было легче найти) — элемент массива с номером i .
- len(a) (на всякий случай повторю, чтобы было легче найти) — длина массива.
- a.append(x) — приписывает к массиву новый элемент со значением x , в результате длина массива становится на 1 больше. Конечно, вместо x может быть любое арифметическое выражение.
- a.pop() — симметричная операция, удаляет последний элемент из массива. Длина массива становится на 1 меньше. Если нужно запомнить значение удаленного элемента, надо просто сохранить результат вызова pop в новую переменную: res = a.pop() .
- a * 3 — это массив, полученный приписыванием массива a самого к себе три раза. Например, [1, 2, 3] * 3 — это [1, 2, 3, 1, 2, 3, 1, 2, 3] . Конечно, на месте тройки тут может быть любое арифметическое выражение. Самое частое применение этой конструкции — если вам нужен массив длины n , заполненный, например, нулями, то вы пишете [0] * n .
- b = a — присваивание массивов. Теперь в b записан тот же массив, что и в a . Тот же — в прямом смысле слова: теперь и a , и b соответствуют одному и тому же массиву, и изменения в b отразятся в a и наоборот. Еще раз, потому что это очень важно. Присваивание массивов (и вообще любых сложных объектов) в питоне не копирует массив, а просто обе переменные начинают ссылаться на один и тот же массив, и изменения массива через любую из них меняет один и тот же массив. При этом на самом деле тут есть многие тонкости, просто будьте готовы к неожиданностям.
- b = a[1:4] («срез») — делает новый массив, состоящий из элементов старого массива начиная со первого (помните про нумерацию с нуля!) и заканчивая третьим (т.е. до четвертого, но не включительно, аналогично тому, как работает range ); этот массив сохраняется в b . Для примера выше получится [5, -3, 12] . Конечно, на месте 1 и 4 может быть любое арифметическое выражение. Более того, эти индексы можно вообще не писать, при этом автоматически подразумевается начало и конец массива. Например, a[:3] — это первые три элемента массива (нулевой, первый и второй), a[1:] — все элементы кроме нулевого, a[:-1] — все элементы кроме последнего (!), а a[:] — это копия всего массива. И это именно копия, т.е. запись b = a[:] именно копирует массив, получающиеся массивы никак не связаны, и изменения в b не влияют на a (в отличие от b = a ).
Ввод-вывод массива
Как вам считывать массив? Во-первых, если все элементы массива задаются в одной строке входного файла. Тогда есть два способа. Первый — длинный, но довольно понятный:
Второй — покороче, но попахивает магией:
Может показаться страшно, но на самом деле map(int, input().split()) вы уже встречали в конструкции
когда вам надо было считать два числа из одной строки. Это считывает строку ( input() ), разбивает по пробелам ( .split() ), и превращает каждую строку в число ( map(int, . ) ). Для чтения массива все то же самое, только вы еще заворачиваете все это в list(. ) , чтобы явно сказать питону, что это массив.
Какой из этих двух способов использовать для чтения данных из одной строки — выбирать вам.
Обратите внимание, что в обоих способах вам не надо знать заранее, сколько элементов будет в массиве — получится столько, сколько чисел в строке. В задачах часто бывает что задается сначала количество элементов, а потом (обычно на следующей строке) сами элементы. Это удобно в паскале, c++ и т.п., где нет способа легко считать числа до конца строки; в питоне вам это не надо, вы легко считываете сразу все элементы массива до конца строки, поэтому заданное число элементов вы считываете, но дальше не используете:
Еще бывает, что числа для массива задаются по одному в строке. Тогда вам проще всего заранее знать, сколько будет вводиться чисел. Обычно как раз так данные и даются: сначала количество элементов, потом сами элементы. Тогда все вводится легко:
Более сложные варианты — последовательность элементов по одному в строке, заканчивающаяся нулем, или задано количество элементов и сами элементы в той же строке — придумайте сами, как сделать (можете подумать сейчас, можете потом, когда попадется в задаче). Вы уже знаете все, что для этого надо.
Как выводить массив? Если надо по одному числу в строку, то просто:
Если же надо все числа в одну строку, то есть два способа. Во-первых, можно команде print передать специальный параметр end=» » , который обозначает «заканчивать вывод пробелом (а не переводом строки)»:
Есть другой, более простой способ:
Эта магия обозначает вот что: возьми все элементы массива a и передай их отдельными аргументами в одну команду print . Т.е. получается print(a[0], a[1], a[2], . ) .
Двумерные массивы
Выше везде элементами массива были числа. Но на самом деле элементами массива может быть что угодно, в том числе другие массивы. Пример:
Что здесь происходит? Создаются три обычных массива a , b и c , а потом создается массив z , элементами которого являются как раз массивы a , b и c .
Что теперь получается? Например, z[1] — это элемент №1 массива z , т.е. b . Но b — это тоже массив, поэтому я могу написать z[1][2] — это то же самое, что b[2] , т.е. -3 (не забывайте, что нумерация элементов массива идет с нуля). Аналогично, z[0][2]==30 и т.д.
То же самое можно было записать проще:
Получилось то, что называется двумерным массивом. Его можно себе еще представить в виде любой из этих двух табличек:
Первую табличку надо читать так: если у вас написано z[i][j] , то надо взять строку № i и столбец № j . Например, z[1][2] — это элемент на 1 строке и 2 столбце, т.е. -3. Вторую табличку надо читать так: если у вас написано z[i][j] , то надо взять столбец № i и строку № j . Например, z[1][2] — это элемент на 2 столбце и 1 строке, т.е. -3. Т.е. в первой табличке строка — это первый индекс массива, а столбец — второй индекс, а во второй табличке наоборот. (Обычно принято как раз обозначать i первый индекс и j — второй.)
Когда вы думаете про таблички, важно то, что питон на самом деле не знает ничего про строки и столбцы. Для питона есть только первый индекс и второй индекс, а уж строка это или столбец — вы решаете сами, питону все равно. Т.е. z[1][2] и z[2][1] — это разные вещи, и питон их понимает по-разному, а будет 1 номером строки или столбца — это ваше дело, питон ничего не знает про строки и столбцы. Вы можете как хотите это решить, т.е. можете пользоваться первой картинкой, а можете и второй — но главное не запутайтесь и в каждой конкретной программе делайте всегда всё согласованно. А можете и вообще не думать про строки и столбцы, а просто думайте про первый и второй индекс.
Обратите, кстати, внимание на то, что в нашем примере z[2] (массив, являющийся вторым элементом массива z ) короче остальных массивов (и поэтому на картинках отсутствует элемент в правом нижнем углу). Это общее правило питона: питон не требует, чтобы внутренние массивы были одинаковой длины. Вы вполне можете внутренние массивы делать разной длины, например:
здесь нулевой массив имеет длину 4, первый длину 2, второй длину 3, третий длину 0 (т.е. не содержит ни одного элемента), а четвертый длину 1. Такое бывает надо, но не так часто, в простых задачах у вас будут все подмассивы одной длины.
(На самом деле даже элементы одного массива не обязаны быть одного типа. Можно даже делать так: y = [[1, 2], 3, 4] , здесь нулевой элемент массива z — сам является массивом, а еще два элемента — просто числа. Но это совсем редко бывает надо.)
Операции над двумерным массивом
Собственно, никаких новых операций над двумерными массивами нет. Вы всегда работаете или с внешним массивом, или с каким-то внутренним массивом, и можете использовать все операции, которые знаете для одномерных массивов. Например, len(z) — это длина «внешнего» массива (в примере выше получается 3, т.к. z содержит три элемента, и не важно, что каждый из них тоже массив), а len(z[2]) — длина внутреннего массива на позиции 2 (т.е. 2 в примере выше). Для массива x выше (того, у которого каждый подмассив имеет свою длину) получим len(x)==5 , и, например, len(x[3])==0 .
Аналогично работают все остальные операции. z.append([1,2]) приписывает к «внешнему» массиву еще один «внутренний» массив, а z[2].append(3) приписывает число 3 к тому «внутреннему» массиву, который находится на позиции 2. Далее, z.pop() удаляет последний «внутренний» из «внешнего» массива, а z[2].pop() удаляет последний элемент из «внутреннего» массива на позиции 2. Аналогично работают z[1:2] и z[1][0:1] и т.д. — все операции, которые я приводил выше.
Обход двумерного массива
Конечно, чтобы обойти двумерный массив, надо обойти каждый его «внутренний» массив. Чтобы обойти внутренний массив, нужен цикл for , и еще один for нужен, чтобы перебрать все внутренние массивы:
Создание пустого массива
Неожиданно нетривиальная операция на двумерных массивах — это создание двумерного массива определенного размера, заполненного, например, нулями. Вы помните, что одномерный массив длины n можно создавать как [0] * n . Возникает желание написать a = ([0] * m) * n , чтобы создать двумерный массив размера n x m (мы хотим, чтобы первый индекс массива менялся от 0 до n-1 , а второй индекс до m-1 , поэтому это именно ([0] * m) * n , а не ([0] * n) * m ). Но это сработает не так, как вы можете думать. Дело опять в том, что в питоне массивы по умолчанию не копируются полностью, поэтому то, что получается — это массив длина n , в котором каждый элемент соответствует одному и тому же массиву длины n . В итоге, если вы будете менять, например, a[1][2] , то так же будет меняться и a[0][2] , и a[3][2] и т.д. — т.к. все внутренние массивы на самом деле соответствуют одному и тому же массиву.
Поэтому массив размера n x m делается, например, так:
мы вручную n раз приписали к массиву a один и тот же массив.
Или еще есть магия в одну строчку:
a = [[0] * m for i in range(n)]
Я пока не буду объяснять, как это работает, просто можете запомнить. Или пользоваться предыдущим вариантом.
Обратите внимание, что тут важный момент — хотим мы, чтобы n соответствовало первому индексу или второму. В примерах выше n — размер первого индекса (т.е. размер «внешнего» массива), a m — размер второго индекса (т.е. размер каждого «внутреннего» массива). Если вы хотите, то можно делать и наоборот, но это вы сами должны решить и делать согласованно во всей программе.
Ввод-вывод двумерного массива
Обычно двумерный массив вам задается как n строк по m чисел в каждой, причем числа n и m вам задаются заранее. Такой двумерный массив вводится эдакой комбинацией двух способов ввода одномерного массива, про которые я писал выше:
Мы считываем очередную строку и получаем очередной «внутренний» массив: list(map(int, input().split())) , и приписываем его ( append ) ко внешнему массиву.
Обратите внимание, что здесь мы уже четко решили, что первый индекс нашего массива соответствует строкам входного файла, а второй индекс — столбцам, т.е. фактически мы уже выбрали левую из двух картинок выше. Но это связано не с тем, как питон работает с двумерными массивами, а с тем, как заданы входные данные во входном файле.
Вывод двумерного массива, если вам его надо вывести такой же табличкой, тоже делается комбинацией способов вывода одномерного массива, например, так:
Многомерные массивы
Аналогично двумерным, бывают и трехмерные и т.д. массивы. Просто каждый элемент «внутреннего» массива теперь сам будет массивом:
Здесь a[0] — это двумерный массив [[1, 2], [3, 4]] , и a[1] — двумерный массив [[5, 6], [7, 8]] . Например, a[1][0][1] == 6 .
Многомерные массивы в простых задачах не нужны, но на самом деле бывают полезны и не представляют из себя чего-то особо сложного. С ними все аналогично тому, что мы обсуждали про двумерные массивы.
Источник