Массивы в 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, которая вводит массив с клавиатуры, обрабатывает элементы и выводит на экран измененный массив С клавиатуры вводятся все элементы массива, значения элементов увеличиваются в два раза. Выводим все значения элементов в консоль.
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])
Алгоритм поиска минимального значения массива в 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 (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])

Вернуться к содержанию Следующая тема Работа с модулями в Питон

лабораторные работы и задачи по программированию и информатике, егэ по информатике

Массивы (списки)

Массивы (списки) в Питоне, как и в других языках программирования, — это определенное количество элементов одного типа, которые имеют общее имя, и каждый элемент имеет свой индекс — порядковый номер.

Списки являются упорядоченными последовательностями, которые состоят из различных объектов (значений, данных), заключающихся в квадратные скобки [ ] и отделяющиеся друг от друга с помощью запятой.

Создание списков на Python

Создать список можно несколькими способами. Рассмотрим их.

1. Получение списка через присваивание конкретных значений

  • Так выглядит в коде Python пустой список:

s = [] # Пустой список

l = [25, 755, -40, 57, -41] # список целых чисел l = [1.13, 5.34, 12.63, 4.6, 34.0, 12.8] # список из дробных чисел l = ["Sveta", "Sergei", "Ivan", "Dasha"] # список из строк l = ["Москва", "Иванов", 12, 124] # смешанный список l = [[0, 0, 0], [1, 0, 1], [1, 1, 0]] # список, состоящий из списков l = [‘s’, ‘p’, [‘isok’], 2] # список из значений и списка

l = [1, 3] + [4, 23] + [5] # Результат: # l = [1, 3, 4, 23, 5]

2. Списки при помощи функции List()

Получаем список при помощи функции List()

l = list (‘spisok’) # ‘spisok’ — строка print(l) #[‘s’, ‘p’, ‘i’, ‘s’, ‘o’, ‘k’] — результат — список

3. Создание списка при помощи функции Split()

  • Используя функцию split в Питон можно получить из строки список. Рассмотрим пример:

stroka ="Hello, world" # stroka — строка lst=stroka.split(",") # lst — список lst # [‘Hello’, ‘ world’]

4. Генераторы списков

  • В python создать список можно также при помощи генераторов, — это довольно-таки новый метод:
  • Первый простой способ.

Сложение одинаковых списков заменяется умножением:

# список из 10 элементов, заполненный единицами l = [1]*10 # список l = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]

l = [i for i in range(10)] # список l = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

или такой пример:

c = [c * 3 for c in ‘list’] print (c) # [‘lll’, ‘iii’, ‘sss’, ‘ttt’]

l = [i*i for i in range(10)]

l = [(i+1)+i for i in range(10)] print(l) # [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]

from random import randint l = [randint(10,80) for x in range(10)] # 10 чисел, сгенерированных случайным образом в диапазоне (10,80)

Ввод списка (массива) в языке Питон

  • Для ввода элементов списка используется цикл range:

for i in range(N): print ( "L[", i, "]=", sep = "", end = "" ) L[i] = int( input() )

L = [ int(input()) for i in range(N) ]

Функция int здесь используется для того, чтобы строка, введенная пользователем, преобразовывалась в целые числа.

Как уже рассмотрено выше, список можно выводить целым и поэлементно:

# вывод целого списка (массива) print (L) # поэлементный вывод списка (массива) for i in range(N): print ( L[i], end = " " )

Задание Python 4_5:
Заполните массив элементами арифметической прогрессии. Её первый элемент, разность и количество элементов нужно ввести с клавиатуры.

* Формула для получения n-го члена прогрессии: an = a1 + (n-1) * d

Python — высокоуровневый язык программирования общего назначения. Поддерживает не только ООП, но и также структурное, функциональное, императивное, аспектно-ориентированное программирование. Стандартная библиотека содержит многие инструменты для работы с сетевыми протоколами, текстовыми кодировками, мультимедийными форматами, для разработки кроссплатформенных приложений.

Массив в "Питоне"

Одномерный массив представляет собой список элементов.

Значения списка указываются между квадратных скобок [], перечисляются через запятую. Любой элемент вызывается по индексу. Элементам могут присваиваться новые значения.

Так выглядит пустой список:

Массив строк в "Питоне" выглядит так:

  • Prime = [‘string1’, ‘string2’, ‘string3’]
  • Prime[1] = ‘string2’; //true

Функция len() возвращает количество элементов внутри списка.

Для перечисления элементов массива используется цикл for. Его отличие от Pascal в том, что он перебирает именно элементы, а не их индексы.

Для создания цикла используется генератор заполнения списков. Записывается в виде [значение массива for имя переменной in количество элементов];

Двумерный массив в "Питоне" создается с помощью вложенных генераторов. Выглядеть это должно примерно следующим образом:

  • [[0 for j in range(m)] for i in range(n)]

Создание массива в NumPy

Для создания и модификации массивов в "Питоне" используется библиотека NumPy.

Она поддерживает многомерный массив и матрицы, обладает большим набором пакетов для решения математических задач. А также обеспечивает работу с однородными многомерными массивами и матрицами. Чтобы получить возможность пользоваться функциями этого пакета, его необходимо импортировать.

Один из наиболее простых способов, как задать массив в "Питоне" — воспользоваться функцией array(). Она создает объект типа ndarray.

  • array = np.array(/* множество элементов */)

Теперь array обладает типом ndarray. Это можно проверить функцией array.type(). Она приняла в качестве аргумента имя созданного массива. Вернется ответ — .

Чтобы переопределить тип, нужно использовать dtype=np.complex на этапе создания.

  • array2 = np.array([ /*элементы*/, dtype=np.complex)

Если нужно задать массив, но его элементы на этом этапе неизвестны, он заполняется нулями функцией zeros(). Можно создать массив из единиц функцией ones(). В качестве аргументов принимается количество вложенных массивов и количество элементов внутри.

  • np.zeros(2, 2, 2)

Создаст два массива внутри, которые содержат по 2 элемента.

Чтобы вывести массив на экран, используется функция print(). Если массив слишком большой для печати, NumPy скрывает центральную часть и выводит только крайние значения.

Чтобы увидеть весь массив, применяется функция set_printoptions(). По умолчанию выводятся только первые 1000 элементов. Это значение указывается как аргумент с ключевым словом threshold.

Базовые операции NumPy

Любые действия над элементами массива в "Питоне" предполагают создание нового массива.

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

  • array1 = np.array([[1, 2, 3], [1, 2, 3]])
  • array2 = np.array([[1, 2, 3], [1, 2, 3], [1, 2, 3]])

При выполнении array1 + array2 компилятор выведет ошибку, потому что размер первого массива — 2, а второго — 3.

  • array1 = np.array([1, 2, 5, 7])
  • array2 = arange([1, 5, 1])

Array1 + array2 вернет массив с элементами 2, 4, 8, 11. Ошибка не возникнет, потому что размер обоих одинаковый.

Вместо ручного сложения можно использовать функцию, которая входит в класс ndarray sum().

  • np.array(array1 + array1) == array1 + array2

Класс ndarray предоставляет большую библиотеку методов для математических операций. Они задаются в виде np.имя метода (имя переменной).

Форма

Размер массива в "Питоне" определяет форму. Для проверки текущей формы используется метод shape().

Массив с двумя и тремя элементами имеет форму (2, 2, 3). Она изменится, если в shape() указать аргументы. В качестве первого будет использовано количество подмассивов, второго — размерность каждого подмассива. Ту же самую операцию выполняет функция reshape(). Ее параметры определяют число строк и столбцов.

Существуют методы для манипуляций формой. Например, ravel() из многомерного массива делает одномерный, выстраивая внутренние значения по возрастанию последовательно. Функция transpose() меняет местами строки и столбцы многомерного массива.

Срезы

Часто приходится работать не с целым массивом, а только с некоторыми его элементами. Для этих целей в "Пайтоне" существует метод "Срез" (слайс). Он пришел на замену перебору элементов циклом for.

Метод открывает широкие возможности для получения копии массива в "Питоне". Все манипуляции осуществляются в таком виде [start:stop:step]. Здесь значение start обозначает индекс элемента, от которого начинается отсчет, значение stop — последний элемент, размер шага — количество пропускаемых элементов при каждой итерации. По умолчанию start равняется нулю, то есть отсчет начинается от нулевого элемента списка, stop равняется индексу последнего элемента в списке, шаг — равен единице, то есть перебирает каждый поочередно. Если передать в функцию без аргументов, список копируется полностью от начала до конца.

Например, у нас есть массив:

Чтобы его скопировать, используем mas[:]. Функция вернет последовательность элементов [1, 2, 3, 4]. Если аргументом будет отрицательное значение, например -3, функция вернет элементы с индексами от третьего до последнего.

После двойного двоеточия указывается шаг элементов, копируемых в массиве. Например, mas[::2] вернет массив [1, 3]. Если указано отрицательное значение, например, [::-2] отсчет будет начинаться с конца, и получим [3, 1].

Методом среза можно гибко работать с вложенными списками. Для двумерного массива в "Питоне" [:, 2] означает, что вернется каждый третий элемент всех массивов. Если указать [:2] — вернутся первые два.

Копия

Получение копии осуществляется при помощи слайсов, о которых написано выше. В Python копирование через присваивание не работает, потому что таким образом передаются не сами объекты, а только ссылки. Это означает, что создав массив со значениями np.arange(10) и присвоив array2 = array1, получим два объекта с одинаковыми значениями, но разными именами, в данном случае array1 и array2. Изменение формы одного из них повлияет на второй. Функция array1.shape(3, 4) изменит форму array2.

Функция view() создает разные объекты с одинаковыми данными. Например, у нас есть некий массив array, к которому мы применяем функцию view()

Полученное значение присваиваем второму массиву array2 и видим, что это разные объекты, но у них одинаковые данные. Проверяем:

Если меняем форму одного из массивов, оно не меняется и во втором.

  • array1.shape(2, 6)
  • array1 == array2; // true

Объединение, разбиение

Массивы между собой могут объединяться. Это осуществляется вдоль осей или строк. Функция hstack() объединяет их по строкам, а vstack() — по столбцам.

С помощью функции column_stack() можно объединить массивы в аргументах в один одномерный. Аналогично column_stack() работает row_stack(), но объединяет строки, а не столбцы. Чтобы разбить массив по горизонтали, применяется функция hsplit(), а vsplit() — по вертикали.