Python definiuje 6 typów sekwencyjnych: napisy, napisy w Unicode, listy, krotki, bufory, oraz obiekty xrange.
Literały napisowe są zapisywane w pojedyńczych lub podwójnych
cudzysłowach:
'xyzzy', "frobozz". Dalsze informacje o literałach
napisowych można odnaleźć w rozdziale 2
opisu języka.
Napisy w Unicode są podobne do
"zwykłych" napisów z tą różnicą, że tworzy się je z przedrostkiem
"u": u'abc', u"def". Listy tworzy się
za pomocą nawiasów kwadratowych, oddzielając elementy przecinkami:
[a, b, c]. Krotki tworzy się oddzielając elementy przecinkami
wewnątrz, lub bez nawiasów okrągłych, ale pusta krotka musi
zawierać nawiasy, n.p.: a, b, c lub (). Po jedynym
elemencie krotki musi znajdować się przecinek, n.p.: (d,).
Obiekty buforów nie są obsługiwane bezpośrednio w składni Pythona. Z buforów możemy jednak skorzystać wykorzystyując funkcję wbudowaną buffer(). Bufory nie obsługują operacji łączenia ani mnożenia (repetycji).
Obiekty xrange, podobnie jak bufory, tworzymy wykorzystując dedykowaną
funkcję wbudowaną, w tym przypadku jest to
xrange(). Obiekty xrange nie obsługują
operacji wykrawania, łączenia ani repetycji, natomiast wywoływanie na
nich operacji in, not in, min() oraz
max() jest niewydajne.
Operacje "in" i "not in" mają ten sam priorytet co operacje porównania. Operacje "+" i "*" mają ten sam priorytet co analogiczne operacje liczbowe.2.7
Tabela zawiera operacje obsługiwane przez większość typów sekwencyjnych. Operacje te ułożono w kolejności rosnących priorytetów (operacje zgrupowane w pojedynczej komórce tabeli posiadają równy priorytet). Zmienne n, i i j są liczbami całkowitymi:
| Operacja | Wynik | Uwagi |
|---|---|---|
x in s |
1 jeśli którykolwiek element
s jest równy x, w przeciwnym wypadku 0 |
(1) |
x not in s |
0 jeśli którykolwiek element
s jest równy x, w przeciwnym wypadku 1 |
(1) |
s + t |
złączenie tabel s i t | |
s * n , n * s |
połączone n płytkich kopii s | (2) |
s[i] |
element o indeksie i sekwencji s, zaczynając od 0 | (3) |
s[i:j] |
wycinek sekwencji s od elementu i do j | (3), (4) |
len(s) |
ilość elementów s | |
min(s) |
najmniejszy element s | |
max(s) |
największy element s |
Uwagi:
in oraz not in działają jak
sprawdzenie występowania ciągu znaków w napisie. W wersjach Pythona
wcześniejszych od wersji 2.3 wartość x musiała być napisem o
długości 1. W wersjach Pythona od 2.3 wzwyż x może być napisem
dowolnej długości.
0 są traktowane jak
0 (co w wyniku daje pustą sekwencję tego samego typu co
s). Zwracamy uwagę na to, że kopie są płytkie, co oznacza, że
struktury zagnieżdżone nie podlegają kopiowaniu. Jest to przyczyna
błędów początkujących programistów. Weźmy pod uwagę następujący
przykład:
>>> lists = [[]] * 3 >>> lists [[], [], []] >>> lists[0].append(3) >>> lists [[3], [3], [3]]
Mamy tu przykład zagnieżdżenia trzech kopii pustej listy [[]] w
zmiennej lists. Pusta lista, będąca elementem składowym,
występuje w trzech miejscach, lecz jest to wciąż ten sam obiekt. Listę
różnych elementów składowych możemy uzyskać w następujący sposób:
>>> lists = [[] for i in range(3)] >>> lists[0].append(3) >>> lists[1].append(5) >>> lists[2].append(7) >>> lists [[3], [5], [7]]
len(s) + i lub len(s) + j
Zwróć uwagę, że -0 jest nadal równe 0.
i <=
k < j. Jeśli i lub j jest większe od
len(s), zostaje użyte len(s). jeśli pominięto i
zostaje użyte 0. Jeśli pominięto j, zostaje użyte len(s).
Jeśli i jest większe lub równe j, wynik jest pustą sekwencją.