Архив рубрики: Python

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

Списки (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

Условия и циклы

Условия

Для условий используются ключевые слова if, elif, else.

Общий вид:

if условие:
    действия
else:
    действия, если условие не выполнено

Использование elif:

if условие:
    действия
elif другое условие:
    другие действия

Условия записываются с помощью операторов ==, !=, <, >, <=, >= и так далее.
Пример использования
i = raw_input(«Write number: «)
if float(i) < 0:
    print «Number is below 0»
else:
    print «Number is greater or equal to 0»

Ещё можно записывать составные условия с помощью and, ornot).
Например:
i = float(raw_input(«Write number: «))
if i > 0 and i < 10:
    print «Your number is bigger than 0 and lower than 10»
else:
    print «Your number is lower than 0 or bigger than 10»

Циклы

Для циклов используются ключевые слова while и for.
Общий вид использования while:
while условие:
    действия

Например:

i = 0
while i < 10:
    i += 1

После выполнения этого участка кода i будет равно 10.

Пока выполняется условие, будут выполнятся действия.
Общий вид использования for:
for переменная in последовательность:
    действия
Где последовательностью может быть список, строка, словарь и так далее. Любые итерируемые объекты. Проходя через цикл, переменная каждый раз будет принимать следующее значение из последовательности.

Например:

for i in range(10):
    print i

Напечатает числа от 0 до 9 включительно.
Здесь используется функция range. При вызове range(n) будет возвращён список из n чисел, от 0 до n — 1. Если вызвать range(m, n), то будет возвращён список из чисел от m до n — 1. Если вызвать range(m, n, k), то будет возвращен список чисел от m до n-1, но уже с шагом в k. Попробуйте сами, экспериментируйте с интерпретатором.

Выход из цикла

Для выхода из цикла используется ключевое слово break.
Если команда break выполнилась, то цикл прерывается.
Пример:
for i in range(10):
    print i
    if i == 5:
        break

Напечатает числа от 0 до 5 включительно.

Задания:
1. Напишите программу, которая решает квадратные уравнения (без комплексных чисел). Пользователь вводит a, b, c, программа выводит корни, или пишет, что среди вещественных чисел их нет. Для квадратного корня можно возводить в степень 0.5, или использовать функцию из математического корня:
import math
math.sqrt(25) # вернёт 5
Если не помните, как решать квадратные уравнения, гуглите.

2. Напишите программу, которая будет печатать то, что ввёл пользователь, пока он не введёт какое-нибудь число или фразу. Для сравнения строк можно использовать операторы == и !=.
Пример:
spurdo
> spurdo
sparde
> sparde
ebin
> ebin
stop

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

Автор: Бихтсэ
Дата публикации: 2012-09-14T06:20:00.000-07:00

Функции

Общий вид записи функций в питоне:

def имя_функции(аргументы):
    тело_функции
 
def обозначает define, то есть «определение».
В функциях используется ключевое слово return, функция возвратит то, что будет стоять после этого слова.
Например, функция квадрата числа будет выглядеть так:
 
def square(x):
    return x ** 2
Вызов этой функции будет выглядеть так:
square(5) # вернёт 25
 
Что можно прочитать, как «квадрат числа x это x во второй степени».
 
Функция может не принимать аргументы, например, с помощью следующей функции мы можем «бросить» игральную кость:
 
import random
 
def dice():
    return random.randint(1, 6)
 
Вызов этой функции:
dice()
 
Функция может и не содержать слова return, тогда она возвратит None.
 

Автор: Бихтсэ
Дата публикации: 2012-09-14T01:51:00.000-07:00

Ввод-вывод

Для взаимодействия с пользователем из консоли программа может использовать ввод-вывод. Всё очень просто: для вывода используем print, для ввода — raw_input.
Например:

i = raw_input(«Enter something: «)
print «You entered: » + i

Попробуйте выполнить эту программу.
Просто? Более чем, на мой взгляд. Но некоторые моменты требует прояснения:
raw_input(«Enter something: «) — строка здесь то, что получит пользователь программы при вводе.
print «You entered: « + i — плюс здесь выступает, как оператор конкатенации (склейки) строк.

Задание читателям: напишите программу, в которой пользователь должен ввести число, программа должна вывести квадрат этого числа. Для преобразования строки в целое число используйте функцию int, для преобразования в число с плавающей точкой — float. Обратно в строку можно перевести с помощью функции str.

Если у вас что-то не получилось, пишите в комментарии или спрашивайте в конференции: python-b@conference.jabber.ru

Автор: Бихтсэ
Дата публикации: 2012-09-13T03:54:00.000-07:00

Переменные

Переменные в питоне нужны для сохранения каких либо объектов: чисел, строк, словарей, и так далее.

Как же создать переменную?

Просто пишем имя, знак равенства, значения. Тип не нужен.

Вот так:
имя_переменной = значение
Например:
i = 5
string = «spurdo»
b = True

Переменные на то переменные, что их можно изменять. При изменении можно использовать прошлое значение:
i = 5
i = i + 5 # i будет 10
Или более короткий вид записи
i = 5
i += 5
Мы можем так делать и для других операций.
+= -= *= /=

Автор: Бихтсэ
Дата публикации: 2012-09-13T03:36:00.001-07:00

Математические операции в python

Основные математические операторы в python:
+ — сложение
— вычитание
* — умножение
/ — деление
% — взятие остатка от деления
** — возведение в степень
Можно пользоваться интерпретатором питона, как калькулятором. Для этого запускаем его, пишем выражение, жмём enter — вуаля, результат написан.
Важно знать некоторые моменты:
Деление целых чисел на целое будет возвращать целое число, как результат. Например:

>>> 5 / 2
2

Как же избежать этого? Использовать числа с плавающей точкой:

>>> 5 / 2.0
2.5

Или сделать вот такое действие (или написать его в начале программы, например):

>>> from __future__ import division

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

>>> 5 / 2
2.5

>>> 10 / 2
5.0

Автор: Бихтсэ
Дата публикации: 2012-09-13T02:50:00.000-07:00