Массивы, они же списки
Массив — структура данных, хранящая набор значений (элементов массива), идентифицируемых по индексу или набору индексов, принимающих целые (или приводимые к целым) значения из некоторого заданного непрерывного диапазона.
Массивы нужны для удобного хранения и обработки данных.
В Python массивы реализованы списками (list) и кортежами (tuple).
Допустим, мы хотим из введённых 4 значений выбрать только положительные.
Это можно сделать без массивов:
a = int(input("a=")) b = int(input("b=")) c = int(input("c=")) d = int(input("d=")) if a > 0: print(a) if b > 0: print(b) if c > 0: print(c) if d > 0: print(d)
Но что, если значений не 4, а 100? Или вообще, усложним задачу: числа вводятся до тех пор, пока пользователь не введёт пустую строку. Вот тут-то нам и пригодятся массивы, а также ранее изученные темы.
1 2 3 4 5 6 7 8 9 10 | positive_numbers = [] user_input = input() while user_input: number = int(user_input) if number > 0: positive_numbers.append(number) user_input = input() print(positive_numbers) |
В строке 1 мы создаём пустой список. Списки в Python - упорядоченные изменяемые коллекции объектов произвольных типов.
Пустой список создаётся с помощью выражения []. Можно создавать непустые списки:
>>> array = [1, 2, 3, 0, 1.4, -2] >>> array [1, 2, 3, 0, 1.4, -2]
Список может содержать любое количество любых объектов (в том числе и вложенные списки), или не содержать ничего. Так, например, можно реализовать многомерный массив:
array = [ [1, 2, 3, 4], [2, 2, 3, 4], [3, 3, 3, 4], [4, 4, 4, 4], ]
В строке 7 positive_numbers.append(number) мы добавляем число в массив. Разумеется, в строках выше у нас цикл, читающий всё до пустой строки, преобразование ввода в число, проверка на положительность числа.
append - это метод списка. Метод - это функция, принадлежащая какому-то классу или объекту. Подробнее про методы мы поговорим позже, сейчас же достаточно знать, что, если positive_numbers - список, то через точку можно написать append, что добавит в конец списка элемент со значением number.
С методами списков можно ознакомиться здесь.
К элементам массива (списка) можно обращаться по индексу:
>>> array = [1, 2, 3, 0, 1.4, -2] >>> print(array[0]) 1 >>> print(array[1]) 2 >>> print(array[3]) 0
Нумерация массивов, как в большинстве языков программирования, в Python идёт с нуля (то есть первый элемент массива имеет индекс 0, второй - индекс 1, и т.д.)
Однако, в отличие от многих языков, в Python можно обращаться к элементам по отрицательному индексу. Такой синтаксис позволяет обращаться к элементам с конца массива. Нумерация в таком случае идёт с -1.
>>> array = [1, 2, 3, 0, 1.4, -2] >>> print(array[-1]) -2 >>> print(array[-2]) 1.4 >>> print(array[-5]) 2
Также, поскольку списки - изменяемый тип данных, то по индексу возможно присвоение:
>>> array = [1, 2, 3, 0, 1.4, -2] >>> array[1] = 42 >>> array [1, 42, 3, 0, 1.4, -2]
А раз можно обратиться к каждому из элементов массива, то можно перебрать его значения в цикле. Например, напечатать все значения, каждое с новой строки:
array = [1, 2, 3, 0, 1.4, -2] index = 0 while index < len(array): print(array[index]) index = index + 1
len(array) возвращает количество элементов в массиве.
Можно напечатать все значения в обратном порядке; эту задачу я оставляю читателю.