Можно получать доступ к элементам с конца. 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