В серии: Библиотека alt м. В. Сысоева, И. В. Сысоев


Download 0.87 Mb.
bet26/40
Sana23.04.2023
Hajmi0.87 Mb.
#1387407
TuriКнига
1   ...   22   23   24   25   26   27   28   29   ...   40
Bog'liq
Боши Лекция Парадигма и методы программирование

2.5. Кортежи


>>> mylist2
[6, 10, 2015, [’Программирование’, 11.3]]
>>> mylist2[-1]
[’Программирование’, 11.3]
Во второй список специально был добавлен ещё один список, чтобы показать, что списки могут быть вложенными. Также в последней приведённой программе была использована возможность индексировать списки с конца: минус первый элемент списка — это его последний элемент. Таким образом, mylist2[-1] — это обращение к последнему (первому с конца) элементу списка, являющемуся тоже списком.

2.5 Кортежи


Список так же может быть неизменяемым, как и строка, в этом случае он называется кортеж (tuple). Кортеж использует меньше памяти, чем список. При задании кортежа вместо квадратных скобок используются круглые (хотя можно и совсем без скобок). Кортеж не допускает изменений, в него нельзя добавить новый элемент, удалить или заменить существующие элементы, но он может содержать изменяемые объекты, например, списки:
>>> ll = []
>>> A = (1, 2, 3, ll)
>>> A
(1, 2, 3, []) >>> A[1] = 4
Traceback (most recent call last):
File "
", line 1,
A[1] = 4
TypeError: ’tuple’ does support item assignment
>>> A[3].append(3)
>>> (A, ll)
(1, 2, 3, [3]) [3]
Видно, что прямая замена элемента кортежа недопустима — вызывает TypeError, так как тип tuple не поддерживает изменеине элементов, но если использовать втроенный метод append у списка, являющегося элементом кортежа, этот список можно изменить.
Функция tuple() берет в качестве аргумента строку или список и превращает его в кортеж, а функция list() переводит кортеж в список:
>>> B = (A)
>>> B
[1, 2, 3]
>>> C = (B)
>>> C
(1, 2, 3)
Основное различие между кортежами и списками состоит в том, что кортежи не могут быть изменены. На практике это означает, что у них нет методов, которые бы позволили их изменить: append(), extend(), insert(), remove(), pop(). Но можно взять срез от кортежа, так как при этом создастся новый кортеж.
Кортежи в некоторых случаях быстрее, чем списки. Но такие оптимизации в каждом конкретном случае требуют дополнительных исследований. Кортежи делают код безопаснее в том случае, если у вас есть «защищенные от записи» данные, которые не должны изменяться. Некоторые кортежи могут использоваться в качестве элементов множества и ключей словаря (конкретно, кортежи, содержащие неизменяемые значения, например, строки, числа и другие кортежи). Словари будут рассмотрены в следующем разделе. Списки никогда не могут использоваться в качестве ключей словаря, потому что списки — изменяемые объекты.
В Python можно использовать кортежи, чтобы присваивать значение нескольким переменным сразу:
>>> v = (’f’, 5, True)
>>> (x, y, z) = v
>>> x
’f’
>>> y
5
>>> z
True
>>>
Это не единственный способ использования. Предположим, что вы хотите присвоить имена диапазону значений. Вы можете использовать встроенную функцию range() для быстрого присвоения сразу нескольких последовательных значений.
>>> (MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY) = (1, 8)
>>> MONDAY
1
>>> SUNDAY
7
>>>
Заметим, что при вводе длинных списков, кортежей и словарей как в интерактивном, так и в скриптовом режиме можно перейти на следующую строчку после любой запятой, разделяющей элементы. Это позволяет в большинстве случаев избежать использования символа переноса строки «\».
2.6. Словари

Download 0.87 Mb.

Do'stlaringiz bilan baham:
1   ...   22   23   24   25   26   27   28   29   ...   40




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling