Основной структурой данных в Python являются последовательности (sequence ). Каждому элементу в последовательности присвоен номер – его позиция в последовательности, или индекс (index). Первым всегда является ноль.
В Python имеется шесть встроенных типов последовательностей, наиболее используемыми являются списки (list) и кортежи (tuple), которые мы рассмотрим далее.
Имеется несколько типов операций, которые могут выполняться с последовательностями. Это операции индексирования (indexing), срезы (slicing), добавление (adding), умножение (multiplying) и проверка членства (membership). Кроме того, в Python имеется несколько встроенных функций для получения длины последовательности и поиска наибольших и наименьших её элементов.
Содержание
Списки в Python
Списки – наиболее многофункциональный тип данных в языке Python, который записывается как список элементов, разделённых запятой, заключённые в квадратные скобки. Причём данные (элементы) списка не обязательно должны быть одного типа (т.е., список может включать в себя как данные типа int
, так и str
и другие).
Примеры:
>>> list1 =['physics','chemistry',1997,2000]; >>> list2 =[1,2,3,4,5]; >>> list3 =["a","b","c","d"];
>>> print list1, list2, list3 ['physics', 'chemistry', 1997, 2000] [1, 2, 3, 4, 5] ['a', 'b', 'c', 'd']
Как и индексы в строках, индекс в списке начинается с нуля. Списки так же могут быть подвержены “слайсингу” или “срезу” и так далее.
Доступ к элементам списка
Что бы получить значение элемента(ов) списка – используйте квадратные скобки с указанием индекса для получения среза или отдельного элемента::
>>> list1 = ['physics', 'chemistry', 1997, 2000]; >>> list2 = [1, 2, 3, 4, 5, 6, 7 ]; >>> >>> print "list1[0]: ", list1[0] list1[0]: physics >>> print "list2[1:5]: ", list2[1:5] list2[1:5]: [2, 3, 4, 5]
Обновление данных в списке
Вы можете изменять значения одного или нескольких элементов с списке, указав срез элементов с левой стороны оператора присваивания, либо с использованием метода append()
:
>>> list = ['physics', 'chemistry', 1997, 2000]; >>> >>> print "Value available at index 2 : " Value available at index 2 : >>> print list[2]; 1997 >>> list[2] = 2001; >>> print "New value available at index 2 : " New value available at index 2 : >>> print list[2]; 2001
Метод append()
мы арссмотрим позже.
Удаление элемента списка
Что бы удалить какой-то элемент – вы можете либо использовать оператор del
, если вы точно знаете какой именно элемент надо удалить, либо использовать метод remove()
, если не уверены:
>>> list1 = ['physics', 'chemistry', 1997, 2000]; >>> >>> print list1; ['physics', 'chemistry', 1997, 2000] >>> del list1[2]; >>> print "After deleting value at index 2 : " After deleting value at index 2 : >>> print list1; ['physics', 'chemistry', 2000]
Метод remove()
мы рассмотрим позднее.
Базовые операции со списками в Python
Списки работают с операторами +
и *
так же, как и строки; эти операторы так же обозначают конкатенацию и повторение, только в результате будет создан новый список а не строка.
Фактически, списки могут использовать все те же операторы, которые мы рассматривали для строк в предыдущей главе:
Python Expression | Results | Description |
---|---|---|
len([1, 2, 3]) | 3 | длина |
[1, 2, 3] + [4, 5, 6] | [1, 2, 3, 4, 5, 6] | объединение |
[‘Hi!’] * 4 | [‘Hi!’, ‘Hi!’, ‘Hi!’, ‘Hi!’] | повторение |
3 in [1, 2, 3] | True | членство |
for x in [1, 2, 3]: print x, | 1 2 3 | повторение |
Индексы, срезы и матрицы
Как уже говорилось, списки являются последовательностями и с ними будут работать операции получения индексов и срезов так же, как и со строками.
Предположим, у нас есть такой список:
>>> L = ['spam', 'Spam', 'SPAM!']
Python Expression | Results | Description |
---|---|---|
L[2] | ‘SPAM!’ | смещение всегда начинается с нуля |
L[-2] | ‘Spam’ | отрицательный индекс: отсчёт с правой стороны списка |
L[1:] | [‘Spam’, ‘SPAM!’] | срез получает “участки” списка |
Встроенные функции и методы списков
В Python есть такие встроенные функции для работы со списками:
SN | Function with Description |
---|---|
1 | cmp(list1, list2) сравнение элементов с обеих сторон; |
2 | len(list) получение длины списка; |
3 | max(list) получение наибольшего элемента списка; |
4 | min(list) получение наименьшего элемента списка; |
5 | list(seq) превращение кортежа в список; |
В Python есть такие встроенные методы для работы со списками:
SN | Methods with Description |
---|---|
1 | list.append(obj) добавляет obj списку; |
2 | list.count(obj) подсчитывает, как часто элемент obj встречается в списке; |
3 | list.extend(seq) добавляет последовательность к списку; |
4 | list.index(obj) возвращает индекс объекта obj, если он найден в в списке; |
5 | list.insert(index, obj) вставляет новый элемент в список на указанный индекс; |
6 | list.pop(obj=list[-1]) удаляет obj из списка и печатает его; |
7 | list.remove(obj) удаляет obj из списка; |
8 | list.reverse() меняет порядок элементов в списке на обратный; |
9 | list.sort([func]) сортирует объекты в списке, используя заданную функцию func, если указана; |