Массивы и списки в Python
Рассмотрим в уроке массивы и их виды, списки, нумерацию списков и основные методы при работе с ними.
Массивы
Мы уже рассматривали строковой тип данных. Он представляется как массив символов и обозначается как array. Массивы могут быть одномерными и многомерны.
Перед началом работы с массивами подключаем соответствующий модуль. Для этого введем команду:
from array import *
Создадим массив для данных типа int:
>>> a = array('i', [2, 5, 4, 0, 8])
>>> type(a)
<class 'array.array'>
>>> a
array('i', [2, 5, 4, 0, 8])
Теперь обратимся к каждому из элементов данного массива. Попробуем изменить их и дополнить массив:
>>> a[2]
4
>>> a[6]
Traceback (most recent call last):
File "<pyshell#13>", line 1, in <module>
a[6]
IndexError: array index out of range
Как видите, нельзя обратиться к элементу, которого нет.
Любой массив может содержать данные только одного типа, то есть нельзя использовать int и float в одном массиве. Это является недостатком при работе, для устранения которого были введены списки (list).
Список в Python
Список в Python похож на массив. Различие в том, что в списках можно хранить объекты различных типов данных. Размер списка не статичен и поддается изменениям.
На программном уровне переменная, определяемая как список, содержит ссылку на структуру в памяти, которая хранит ссылки на какие-либо другие объекты или структуры.
Рассмотрим на примере:
>>> a = []
>>> type(a)
<class 'list'>
Теперь добавим элементы и проверим доступ к ним:
>>> a = [1,0.34,"Hello"]
>>> a
[1, 0.34, 'Hello']
>>> a[2]
'Hello'
>>> a[0]
1
>>> a[1]
0.34
Нумерация списка в Python
Прямая и обратная нумерация
По умолчанию нумерация начинается с 0.
a = [1, 'abc', h, 0,256]
0 1 2 3
При обратной нумерации элементы считаются с конца и начинаются с -1:
a = [1, 'abc', h, 0,256]
-4 -3 -2 -1
С помощью этих индексов можем обратиться к каждому элементу списка:
a[0]
>>> 1
a[-2]
>>> h
Срез
Срез — это некий диапазон символов, к которому мы обращаемся. При срезе вторым числом мы указываем номер символа, который не входит в диапазон:
a[0:2] #[1, 'abc']
a[-4:-2] #[1, 'abc']
Мы можем обратиться и к символам с использованием разных нумераций одновременно:
a[0:-2] #[1, 'abc']
Если мы не укажем одну из границ среза, то программа принимает за границу первый или последний символ:
a[:2] #[1, 'abc']
a[2:] #[h, 0,256]
Методы работы со списками
Рассмотрим основные методы работы со списками на примерах.
list.append(x)
Добавляет в конце списка новый элемент x:
>>> a = [0,0.1,"один"]
>>> a.append(321)
>>> a
[0, 0.1, 'один', 321]
list.insert(i,x)
Вставка элемента x на место i (нумерация начинается с нуля):
>>> a = [0,0.1,"один"]
>>> a.insert(1,321)
>>> a
[0, 321, 0.1, 'один']
list.extend(L)
Добавляет в конец списка список L:
>>> a = [0,0.1,"один"]
>>> b = ["два",3,4.1]
>>> a.extend(b)
>>> a
[0, 0.1, 'один', 'два', 3, 4.1]
list.remove(x)
Удаляет первый встреченный элемент со значением x:
>>> a = [0,0.1,"один",0]
>>> a.remove(0)
>>> a
[0.1, 'один', 0]
list.pop(i)
Возвращает элемент, размещенный по индексу i, удаляет его из списка:
>>> a = [0,0.1,"один",0]
>>> a.pop(3)
0
>>> a
[0, 0.1, 'один']
list.count(x)
Возвращает количество элементов, равных x:
>>> a = [0,0.1,"один",0]
>>> a.count(0)
2
list.clear()
Очистка списка:
>>> a = [0,0.1,"один",0]
>>> a
[0, 0.1, 'один', 0]
>>> a.clear()
>>> a
[]
Добавить комментарий