Списки, строки, словари, кортежи, наборы.

Списки (list), строки (str, unicode), словари(dict), кортежи(tuple), наборы(set) похожи несколькими вещами. Во первых, они итерируемые (по ним можно пройти с конструкцией for, и не только). Во вторых, для доступа к элементам у этих объектов используется одинаковый синтаксис.

Приведу его на примере списка:
list = [0, 1, 2, 3, 4]
Итак, мы объявили список из 5 элементов.
Чтобы получить это длину, воспользуемся функцией len.
len(list) # возвратит 5
Для доступа к какому-либо элементу списка используются квадратные скобки. Важно помнить, что нумерация начинается с нуля.
>>> list[0]
0
>>> list[1]
1
>>> list[2]
2
>>> list[3]
3
>>> list[4]
4
>>> list[5]
Traceback (most recent call last):
  File ««, line 1, in
IndexError: list index out of range

Можно получать доступ к элементам с конца. list[-1] будет концом, list[-len(list)] будет началом. Для наглядности, взгляните на картинку (почему-то не отображается, так что вот вам ссылочка). Для примера, возьмём строку «spurdo».

Можно получить и несколько элементов списка. Опять же, возьмём для примера строку «spurdo». Для того, что бы получить несколько элементов, нужно написать так: список[откуда:докуда]. Например: «spurdo»[1:5] вернёт «purd». Если нужно от начала или до конца списка, то вместо индекса ничего не пишите. Например: «spurdo»[3:] вернёт «rdo». Можно указать и третье число — шаг.
Например:

>>> a = range(10)
>>> a[::2] # от начала до конца с шагом 2
[0, 2, 4, 6, 8]
Полезная вещь: получить перевернутый список можно так:

>>> a = range(10)
>>> a[::-1] # от начала до конца с шагом -1
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

Если что-то осталось вам непонятно, пробуйте в интерпретаторе или спрашивайте.

Списки

Списки записываются с помощью квадратных скобок. Например:
a = [3, 5, 9]
Пустой список, соотве
тственно:
a = []
Важный момент: списки могут содержать любые объекты, в том числе, другие списки.
Списки изменяемы. Для того, чтобы добавить элемент в список, нужно воспользоваться методом append. Можно, конечно, сложить старый список и элемент, но, на самом деле, в таком случае будет создан новый список.
Итак, добавление элемента:

>>> a = [1, 2, 3]
>>> a.append(4)
>>> a
[1, 2, 3, 4]

Для удаления элемента из списка используем метод pop. Без аргумента он удалит (и возвратит) последний элемент списка, с аргументом он удалит (и возвратит) элемент списка под номером аргумента.
Например:

>>> a = [1, 2, 3, 4]
>>> a.pop()
4
>>> a
[1, 2, 3]
>>> a.pop(0)
1
>>> a
[2, 3]

Сортировка списка делается с помощью функции reversed, либо с помощью метода sort. Эти способы отличаются в том, что функция не изменит исходный массив, а метод изменит. Меньше слов, больше примеров:

>>> a = [5, 8, 4, 3]
>>> sorted(a)
[3, 4, 5, 8]
>>> a
[5, 8, 4, 3]
>>> a.sort()
>>> a
[3, 4, 5, 8]

Если нужно отсортировать в обратном порядке, можно, конечно, отсортированный массив перевернуть, но я предпочитаю решения поэлегантней. Добавим необязательный аргумент reverse со значением True. Позже я научу добавлять их в функции.

>>> a = [5, 8, 4, 3]
>>> sorted(a, reverse=True)
[8, 5, 4, 3]
>>> a
[5, 8, 4, 3]
>>> a.sort(reverse=True)
>>> a
[8, 5, 4, 3]

Ещё полезные функции при работе со списками: sum, min, max. Не думаю, что нужно описывать, что они делают, попробуйте сами.

Эти методы и функции чаще всего используются при работе со списками. За остальными добро пожаловать в гугл, либо сразу в документацию питона.

Строки

Строки создаются с помощью 'одинарных кавычек', «двойных кавычек». «»»Вот так
мы можем
создать строку в несколько линий»»». Эти способы равноценны. Если вы хотите, чтобы в вашей строке был символ, которым ваша строка начинается, то поставьте перед ним обратную косую черту. Вот так:
>>> «burdo»barde»
'burdo»barde'
Если вы хотите перевод строки, то напишите n в строке. Вот т
ак:
>>> a = «somenstring»
>>> print a
some
string
Табуляции соответствует t.

Строки неизменяемы. Что это значит на практике? Попробуем изменить какой-нибудь элемент строки.
>>> a = «spurdo»
>>> a[0] = «d»
Traceback (most recent call last):
  File ««, line 1, in
TypeError: 'str' object does not support item assignment
Всё. Больше этого ничего не значит. На практическое использование почти не влияет.
Основные методы при работе со строками:

relpace(x, y). Этот метод заменяет все x в исходной строке на y (возвращая новую строку).
Пример:

>>> a = «Hello, World!»
>>> a.replace(«World», «2ch»)
'Hello, 2ch!'
>>> a
'Hello, World!'

Исходная строка не изменилась.

find(x). Находит индекс первого вхождения x в строку. Если его нет, то возвращает -1.

Пример:

>>> a = «spurdo»
>>> a.find(«o»)
5
>>> a.find(«x»)
-1

Для перевода букв в строчные используйте метод lower, в прописные — upper. Работает даже с русскими символами.

>>> a = u»сПуРдО»
>>> print a.lower()
спурдо
>>> print a.upper()
СПУРДО

u обозначает unicode, потому что в питоне 2 стандартная кодировка для строк — ASCII. Так что не забывайте добавлять u. Кстати в третьем питоне все строки юникодовые.

Словари

Словарь — это связанный набор пар ключ-значение. В других языках они могут называться хеш-таблицами.
Объявляется словарь с помощью фигурных скобок:

a = {}
Либо сразу с парами:
a = {«spurdo»: «sparde», «ebin»: «xdd»}
Типы могут быть какими угодно.
Получение значений:

>>> a[«spurdo»]
'sparde'
>>> a[«ebin»]
'xdd'

Добавление значения предельно просто:
>>> a[1] = True

>>> a
{'ebin': 'xdd', 1: True, 'spurdo': 'sparde'}
Заметьте, что нов
ый элемент не добавился в конец. Это издержки словарей, они сделаны так, чтобы работать крайне быстро.


Кортежи

Кортеж — неизменяемый список (ну или почти список). Создаётся с помощью круглых скобок (хотя можно и без них).
>>> a = (3, 5, 9)
>>> a = 3, 5, 9
>>> a
(3, 5, 9)

Зачем они нужны? Например, выполнять параллельное присваивание.
>>> x, y = 3, 5
>>> x, y
(3, 5)
>>> x, y = y, x
>>> x, y
(5, 3)

Можно, например, сделать список кортежей для удобного представления информации:
>>> beatles = [(«Paul», 1942),
…     («John», 1940),
…     («George», 1943),
…     («Ringo», 1940)]
>>> beatles
[('Paul', 1942), ('John', 1940), ('George', 1943), ('Ringo', 1940)]

Если в функции нужно вернуть несколько значений, то удобно сделать это с помощью кортежа.
>>> def somefunc():
…     return 3, 5, 9
>>> somefunc()
(3, 5, 9)

Да, хуёвый пример, но в голову больше ничего не лезет.

Наборы

Набор — список, в котором нет повторяющихся значений.
Можно создать с помощью фигурных скобок (тогда нужно сразу написать значения), или с помощью функции set.
>>> a = {3, 5, 9, 1, 1, 1}
>>> a
set([1, 3, 5, 9])
Вот такие вот пироги. Понятия не имею, где это нужно.


Проверка на вхождение элемента во множество

Чтобы проверить, входит ли какой-либо элемент во множество, используется ключевое слово in. Возвращается True или False.
>>> a = [3, 5, 9]
>>> 3 in a
True
>>> 4 in a
False
>>> b = «spurdo»
>>> «s» in b
True
>>> «spur» in b
True
>>> «barde» in b
False


Вот и всё. Длинноватый пост получился, но, что поделать. Если вы что-то не поняли, пишите в комментарии или заходите в нашу jabber-конфу: python-b@conference.jabber.ru

Автор: Бихтсэ
Дата публикации: 2012-09-15T10:55:00.002-07:00