Рассмотрим два типа коллекций:
- кортежи (tuple)
- списки (list)
Кортежи и списки могут использоваться для хранения произвольного числа элементов данных любых типов.
Кортежи - неизменяемые объекты.
Списки - изменяемые объекты (можно вставлять и удалять элементы списка)
Кортежи создаются с помощью запятых (,)
>>> "green", "red", "yellow", "orange", "blue"
('green', 'red', 'yellow', 'orange', 'blue')
>>>
>>> "Autumn", "Winter", "Spring", "Summer"
('Autumn', 'Winter', 'Spring', 'Summer')
>>>
>>> "Montag",
('Montag',)
>>>
>>> 1,
(1,)
>>>
При выводе кортежа интерпретатор заключает его в круглые скобки.
(1,) - кортеж с одним элементом
() - пустой картеж
Списки можно создавать с помощью квадратных скобок:
>>> ["Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Sonntag"]
['Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag', 'Sonntag']
>>>
>>> ["green", "red", "yellow", "orange", "blue"]
['green', 'red', 'yellow', 'orange', 'blue']
>>>
>>> [1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]
>>>
>>> []
[] - пустой список
>>>
Списки и кортежи хранят не сами элементы данных, а ссылки на объекты.
При создании списков и кортежей создаются копии указанных ссылок на объекты.
Даже в случае значений-литералов, таких как целые числа и строки,
в памяти создаются и инициализируются объекты соответствующих типов,
затем создаются ссылки, указывающте на эти объекты,
и эти ссылки помещаются в список или картеж.
Можно вкладывать одни объекты-коллекции в другие, например создать список списков.
Рассмотрим функцию len(), которая в качестве аргумента принимает единственный элемент данных
и возвращает его длину в виде значения типа int.
>>> len(("green",))
1
>>>
>>> len([1, 2, 3, 4, 5, "red", "yellow", 8])
8
>>>
>>> len("oracle")
6
>>>
Кортежи, списки и строки имеют размер, т.е. это типы данных, которые обладают категорией размера.
Элементы данных таких типов можно передавать функции len().
Все элементы данных в языке Python являются объектами (экземплярами) определенных типов данных (классов).
Тип данных <-----> Класс - будем считать синонимами.
В некоторых языках существуют элементы данных не являющиеся объектами, так называемые простые элементы.
Одно из основных отличий между объектом и простым элементом состоит в том, что объект может обладать методами.
В сущности метод - это обычная функция, которая вызывается в контексте конкретного объекта.
Например, тип list имеет метод append(), с помощью которого можно добавить новый объект в список.
>>> z = [1, 2, "red", "yellow", 8]
>>>
>>> z.append("green")
>>>
>>> z
[1, 2, 'red', 'yellow', 8, 'green']
>>>
Объект z знает, что принадлежит к типу list поэтому явно указывать тип данных не нужно.
Первым аргументом методу append() передается сам объект z - делается это интерпретатором Python автоматически,
в порядке реализованной в нем поддержки методов.
Метод append() изменяет первоначальный список.
Это возможно потому что списки относятся к категории изменяемых объектов.
Это более эффективно, чем создание нового списка включающего первоначальные элементы и дополнительный элемент
с последующим связыванием ссылки на объект с новым списком.
В процедурном языке тоже самое могло бы быть достигнуто с использованием метода append()
>>> list.append(z, "orange" )
>>>
>>> z
[1, 2, 'red', 'yellow', 8, 'green', 'orange']
>>>
Здесь указываются тип данных и метод этого типа данных,
а в качестве первого аргумента передается элемент данных того типа,
метод которого вызывается, за которым следуют дополнительные параметры.
С точки зрения наследования между этими двумя подходами существует малозаметное семантическое отличие.
На практике наиболее часто используется первая форма.
Обычные функции в языке Python вызываются так:
имя_функции(аргументы)
а методы вызываются так:
имя_объекта.имя_метода(аргументы)
Тип list имеет множество других методов, включая insert(),
который используется для вставки элемента в позицию с определенным индексом и remove(),
который удаляет элемент с указанным индексом.
Извлечь из строки символ можно так:
>>> s = "solaris"
>>> s[0]
's'
>>> s[5]
'i'
>>>
Извлечь элемент из списка можно так:
>>> z = [1, 2, 3, 4, 5, "red", "yellow", 8]
>>> z[0]
1
>>> z[5]
'red'
>>>
Из кортежей мы можем только извлекать элементы с помощью []
>>> t = ("green", "red", "yellow", "orange", "blue")
>>> t[0]
'green'
>>> t[4]
'blue'
>>>----->
Изменять значения элементов кортежа мы не можем:
>>> t = ("green", "red", "yellow", "orange", "blue")
>>> t[1] = "red"
Traceback (most recent call last):
File "", line 1, in
t[1] = "red"
TypeError: 'tuple' object does not support item assignment
>>>
Но для списков мы можем использовать [] еще и для изменения элементов списка:
>>> z = [1, 2, 3, 4, 5, "red", "yellow", 8]
>>> z[1] = "green"
>>> z
[1, 'green', 3, 4, 5, 'red', 'yellow', 8]
>>>
Если указать индекс, выходящий за пределы списка, будет возбуждено исключение.
>>> z = [1, 2, 3, 4, 5, "red", "yellow", 8]
>>> z[8]
Traceback (most recent call last):
File "", line 1, in
z[8]
IndexError: list index out of range
>>>
- кортежи (tuple)
- списки (list)
Кортежи и списки могут использоваться для хранения произвольного числа элементов данных любых типов.
Кортежи - неизменяемые объекты.
Списки - изменяемые объекты (можно вставлять и удалять элементы списка)
Кортежи создаются с помощью запятых (,)
>>> "green", "red", "yellow", "orange", "blue"
('green', 'red', 'yellow', 'orange', 'blue')
>>>
>>> "Autumn", "Winter", "Spring", "Summer"
('Autumn', 'Winter', 'Spring', 'Summer')
>>>
>>> "Montag",
('Montag',)
>>>
>>> 1,
(1,)
>>>
При выводе кортежа интерпретатор заключает его в круглые скобки.
(1,) - кортеж с одним элементом
() - пустой картеж
Списки можно создавать с помощью квадратных скобок:
>>> ["Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Sonntag"]
['Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag', 'Sonntag']
>>>
>>> ["green", "red", "yellow", "orange", "blue"]
['green', 'red', 'yellow', 'orange', 'blue']
>>>
>>> [1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]
>>>
>>> []
[] - пустой список
>>>
Списки и кортежи хранят не сами элементы данных, а ссылки на объекты.
При создании списков и кортежей создаются копии указанных ссылок на объекты.
Даже в случае значений-литералов, таких как целые числа и строки,
в памяти создаются и инициализируются объекты соответствующих типов,
затем создаются ссылки, указывающте на эти объекты,
и эти ссылки помещаются в список или картеж.
Можно вкладывать одни объекты-коллекции в другие, например создать список списков.
Рассмотрим функцию len(), которая в качестве аргумента принимает единственный элемент данных
и возвращает его длину в виде значения типа int.
>>> len(("green",))
1
>>>
>>> len([1, 2, 3, 4, 5, "red", "yellow", 8])
8
>>>
>>> len("oracle")
6
>>>
Кортежи, списки и строки имеют размер, т.е. это типы данных, которые обладают категорией размера.
Элементы данных таких типов можно передавать функции len().
Все элементы данных в языке Python являются объектами (экземплярами) определенных типов данных (классов).
Тип данных <-----> Класс - будем считать синонимами.
В некоторых языках существуют элементы данных не являющиеся объектами, так называемые простые элементы.
Одно из основных отличий между объектом и простым элементом состоит в том, что объект может обладать методами.
В сущности метод - это обычная функция, которая вызывается в контексте конкретного объекта.
Например, тип list имеет метод append(), с помощью которого можно добавить новый объект в список.
>>> z = [1, 2, "red", "yellow", 8]
>>>
>>> z.append("green")
>>>
>>> z
[1, 2, 'red', 'yellow', 8, 'green']
>>>
Объект z знает, что принадлежит к типу list поэтому явно указывать тип данных не нужно.
Первым аргументом методу append() передается сам объект z - делается это интерпретатором Python автоматически,
в порядке реализованной в нем поддержки методов.
Метод append() изменяет первоначальный список.
Это возможно потому что списки относятся к категории изменяемых объектов.
Это более эффективно, чем создание нового списка включающего первоначальные элементы и дополнительный элемент
с последующим связыванием ссылки на объект с новым списком.
В процедурном языке тоже самое могло бы быть достигнуто с использованием метода append()
>>> list.append(z, "orange" )
>>>
>>> z
[1, 2, 'red', 'yellow', 8, 'green', 'orange']
>>>
Здесь указываются тип данных и метод этого типа данных,
а в качестве первого аргумента передается элемент данных того типа,
метод которого вызывается, за которым следуют дополнительные параметры.
С точки зрения наследования между этими двумя подходами существует малозаметное семантическое отличие.
На практике наиболее часто используется первая форма.
Обычные функции в языке Python вызываются так:
имя_функции(аргументы)
а методы вызываются так:
имя_объекта.имя_метода(аргументы)
Тип list имеет множество других методов, включая insert(),
который используется для вставки элемента в позицию с определенным индексом и remove(),
который удаляет элемент с указанным индексом.
Извлечь из строки символ можно так:
>>> s = "solaris"
>>> s[0]
's'
>>> s[5]
'i'
>>>
Извлечь элемент из списка можно так:
>>> z = [1, 2, 3, 4, 5, "red", "yellow", 8]
>>> z[0]
1
>>> z[5]
'red'
>>>
Из кортежей мы можем только извлекать элементы с помощью []
>>> t = ("green", "red", "yellow", "orange", "blue")
>>> t[0]
'green'
>>> t[4]
'blue'
>>>----->
Изменять значения элементов кортежа мы не можем:
>>> t = ("green", "red", "yellow", "orange", "blue")
>>> t[1] = "red"
Traceback (most recent call last):
File "
t[1] = "red"
TypeError: 'tuple' object does not support item assignment
>>>
Но для списков мы можем использовать [] еще и для изменения элементов списка:
>>> z = [1, 2, 3, 4, 5, "red", "yellow", 8]
>>> z[1] = "green"
>>> z
[1, 'green', 3, 4, 5, 'red', 'yellow', 8]
>>>
Если указать индекс, выходящий за пределы списка, будет возбуждено исключение.
>>> z = [1, 2, 3, 4, 5, "red", "yellow", 8]
>>> z[8]
Traceback (most recent call last):
File "
z[8]
IndexError: list index out of range
>>>