Стандартные типы данных Python

Стандартные типы данных в Python

В питоне есть все те стандартные типы данных, которые ожидаешь увидеть в языке программирования: целочисленный int, строка str, массив list (он же список), ассоциативный массив dict (он же словарь), переменная типа дата-время datetime, файл file. Термин "словарь" по началу кажется непривычным. После изучения php привыкаешь, что массив и словарь - это одно и то же. К счастью, в Python это не так. В языках типа javascript или actionscript словарь - это тип "объект". Слово "массив" в Python почти не используется, т.к. оно неточно характеризует данные.

Плюс в питоне есть стандартный тип данных set (множество). При изучении основ python, я был удивлён существованим такого типа данных, но его наличие в языке очень полезно. Например, когда бывает нужно выбрать из списка все уникальные значения мы пишем:
a = set([1,2,3,4,3,2,1]) ## преобразуем список к множеству
Далее мы можем пройти по элементам множества в цикле for.

Есть ещё несколько сомнительных типов данных: unicode, tuple и long. tuple - это неизменяемый список. Его удобно использовать для хранения настроек. Фишка: неизменяемый список можно использовать в качестве ключа dict, а изменяемый список (list) для этого использовать нельзя. long должен выйти из употребления. unocode - это строка, хранящая данные в виде unicode... да, странно звучит. Дело в том, что в str данные хранятся в ansii, и при работе с русским текстом они записываются туда в виде пары символов. Вообще это не удобно и часто приводит к затруднениям. В версиях Python выше третьей unicode должен заменить str.

list

добавить в начало списка:
a = [1,2,3]
a.insert(0,0) ## первый параметр говорит на какую позицию вставить
print a
>>>
[0,1,2,3]

сортировка списка:

a = [3,8,2,5]
a.sort() # отсортирует по возрастанию
print a
>> [2, 3, 5, 8]

from bisect import * # некоторые дополнительные функции для работы со списками
insort(a, 4) # вставка, сохраняющая сортировку
print a
>> [2, 3, 4, 5, 8]

a.reverse() # поменяет порядок в списке на противоположный
print a
>> [8, 5, 4, 3, 2]

сортировка списка объектов

class a(object):
    def __init__(self, priority):
        self.priority = priority
    def __repr__(self):
        return str(self.priority)
m = [a(3), a(6), a(1), a(0), a(7)]
m.sort(lambda x,y: x.priority-y.priority)
print m
>>>
[0, 1, 3, 6, 7]