Последовательности в Python напоминают массивы в других языках программирования. Последовательности могут содержать разнородные объекты, изменять размер и осуществлять итерации, по элементам. К последовательностям относятся списки, строки и кортежи. Доступ к элементам последовательности можно осуществлять с помощью индексов (допускаются отрицательные). Используя индексы, можно получить доступ сразу к нескольким элементам последовательности (извлечение среза). Для этого используются три индекса (например, i, j и h), разделенные двоеточием. Индекс h указывает шаг, с которым осуществляется доступ к индексам последовательности. Элемент с индексом j не включается в срез. Если отсутствует индекс i, то извлекается срез от начала до элемента с индексом j. Если отсутствует индекс j, то извлекается срез от элемента с индексом i до конца. Индексация элементов списка начинается с нуля. С помощью знака + можно осуществить конкатенацию последовательностей, знака * — дублирование. Операторы in и not in позволяют осуществить проверку на вхождение. С помощью встроенной функции len() можно узнать длину последовательности. В Python можно использовать инструкцию присваивания последовательностей.



Списки


Списки могут содержать объекты любых типов, изменять содержимое и размер.




>>> #Создать список L
>>> L=[3,1,5,'a','b','cd',2.5,5.5,7.5]
>>> L
[3, 1, 5, 'a', 'b', 'cd', 2.5, 5.5, 7.5]
>>> #Срез, содержащий элементы с индексами 1-4
>>> L[1:5]
[1, 5, 'a', 'b']
>>> #Срез, содержащий элементы от начала списка
>>> #до элемента с индексом 6
>>> L[:7]
[3, 1, 5, 'a', 'b', 'cd', 2.5]
>>> #Срез, содержащий элементы от элемента
>>> #с индексом 3 до конца списка
>>> L[3:]
['a', 'b', 'cd', 2.5, 5.5, 7.5]
>>> #Срез, содержащий каждый третий элемент списка
>>> L[::3]
[3, 'a', 2.5]
>>> #Добавить элемент со значением 7 в конец списка
>>> L.append(7)
>>> L
[3, 1, 5, 'a', 'b', 'cd', 2.5, 5.5, 7.5, 7]
>>> #Удалить элемент со значением 7
>>> L.remove(7)
>>> L
[3, 1, 5, 'a', 'b', 'cd', 2.5, 5.5, 7.5]
>>> #Удалить из списка элемент с индексом 5
>>> L.pop(5)
'cd'
>>> L
[3, 1, 5, 'a', 'b', 2.5, 5.5, 7.5]
>>> #Вставить в позицию 3 списка элемент со значением 'c'
>>> L.insert(3,'c')
>>> L
[3, 1, 5, 'c', 'a', 'b', 2.5, 5.5, 7.5]
>>> #Извлечь из списка последний элемент
>>> L[-1]
7.5
>>> #Объединить списки list и [4,'f']
>>> L.extend([4,'f'])
>>> L
[3, 1, 5, 'c', 'a', 'b', 2.5, 5.5, 7.5, 4, 'f']
>>> #Отсортировать список по возрастанию
>>> L.sort()
>>> L
[1, 2.5, 3, 4, 5, 5.5, 7.5, 'a', 'b', 'c', 'f']
>>> #Отсортировать список по убыванию
>>> L.reverse()
>>> L
['f', 'c', 'b', 'a', 7.5, 5.5, 5, 4, 3, 2.5, 1]
>>>




Очень легко создавать вложенные списки




>>> L1=[['a','b','c'],[1,2,3],[1.5,2.5,3.5]]
>>> L1
[['a', 'b', 'c'], [1, 2, 3], [1.5, 2.5, 3.5]]
>>> L1[0]
['a', 'b', 'c']
>>> L1[1][1]
2
>>>




Со списками удобно работать, используя выражения генераторов списков




>>> L=[i for i in xrange(10)]
>>> L
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> [i+1 for i in L]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>>
>>> L1=[['a','b','c'],[1,2,3],[1.5,2.5,3.5]]
>>> L2=[row[1] for row in L1]
>>> L2
['b', 2, 2.5]
>>>




 



Строки


Строки, как и списки, являются последовательностями. В отличие от списков, строки не могут изменять содержимое и размер. При попытке изменении строки в действительности создается модифицированная новая строка. Строка объявляется с помощью одинарных или двойных кавычек. Кроме этого можно использовать тройные кавычки, которые позволяют использовать в строках специальные символы без использования дополнительных обозначений. Это особенно удобно при отображении блоков текста. Для строк существует большое количество методов, описание которых можно найти в документации.




>>> S='numerical methods'
>>> S
'numerical methods'
>>> len(S)
17
>>> S.title()
'Numerical Methods'
>>> S.capitalize()
'Numerical methods'
>>> S.upper()
'NUMERICAL METHODS'
>>> S.lower()
'numerical methods'
>>> S.find('methods')
10
>>> S.count('m')
2
>>> S=S+'!'
>>> S
'numerical methods!'
>>> S.replace('!','.')
'numerical methods.'
>>> S[:9]
>>> S='numerical methods'
>>> S
'numerical methods'
>>> len(S)
17
>>> S.title()
'Numerical Methods'
>>> S.capitalize()
'Numerical methods'
>>> S.upper()
'NUMERICAL METHODS'
>>> S.lower()
'numerical methods'
>>> S.find('methods')
10
>>> S.count('m')
2
>>> S=S+'!'
>>> S
'numerical methods!'
>>> S.replace('!','.')
'numerical methods.'
>>> S[:9]
'numerical'
>>> S[10:]
'methods!'
>>>
'numerical'
>>> S[10:]
'methods!'
>>>




 


Кортежи


Кортежи являются последовательностями. При создании кортежи заключаются в круглые скобки. Кортежи не позволяют изменять свои значения и не имеют методов.

 



Присваивание последовательностей


В Python последовательности можно присвоить последовательность значений. Присваивание происходит в соответствии с позициями элементов в последовательностях.

Присваивание кортежей.




>>> a,b='c','d'
>>> a,b
('c', 'd')




Это равносильно командам a='c'; b='d'.

Присваивание строки кортежу




>>> a,b,c='ijk'
>>> a,b,c
('i', 'j', 'k')






Присваивание кортежа списку




>>> [A,B]=(1,2)
>>> A,B
(1, 2)






Присваивание последовательности целых чисел переменным a,b,c




>>> a,b,c=range(3)
>>> a,b,c
(0, 1, 2)






Обмен значений переменных с помощью кортежей




>>> a,b=1,2
>>> a,b
(1, 2)
>>> a,b=b,a
>>> a,b
(2, 1)






Можно осуществлять присваивание одного объекта нескольким переменным




>>> a=b=c=1
>>> a
[1]
>>> b
1
>>> c
1
>>>






Это равносильно




>>> c=1
>>> b=c
>>> a=b
>>>






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




>>> a=b=c=[]
>>> a.append(1)
>>> a
[1]
>>> b
[1]
>>> c
[1]