Сортировка списка
Python
for color in sorted(colors):
print color
for color in sorted(colors, reverse=True):
print colorВернуть список в обратном порядке
Python
The reversed() function returns a reversed iterator object.
Сортировка по ключу
Python
print sorted(colors, key=len)
for loop по двум спискам
Python
for name, color in zip(names, colors):
print name, '-->', colorFaster: izip
Цикл по ключам словаря
Python
d = {
"first": 1,
"second": 2,
"third": 3
}
for k in d:
print(k)
Альтернатива, когда нужно мутировать список например (т.к. d.keys() создаёт копию ключей и хранит их отдельном списке - мы не мутируем словарь напрямую):
for k in d.keys():
if k.startswith('r'):
del d[k]Можно ли мутировать итеруемый объект по которому проходит итерация? (Удалять элементы, добавлять и т.д.)
Python
Нельзя
Цикл по ключам и значениям словаря
Python
for key, value in d.items():
print key, '-->', value
Более лучшая альтернатива
for key, value in d.iteritems():
print key, valueСоставить словарь из парных списков
Python
names = ['raymond', 'rachel', 'matthew']
colors = ['red', 'green', 'blue']
d = dict(izip(names, colors))
{'matthew': 'blue', 'rachel': 'green', 'raymond': 'red'Подсчёт со словарями
Python
colors = ['red', 'green', 'red', 'blue', 'green', 'red']
d = {}
for color in colors:
if color not in d:
d[color] = 0
d[color] += 1
{'blue': 1, 'green': 2, 'red': 3}
Альтернатива:
d = {}
for color in colors:
d[color] = d.get(color, 0) +1
Альтернатива:
d = defaultdict(int)
for color in colors:
d[color] += 1Сумма всех значений в списке
Python
a = (1, 2, 3, 4, 5) x = sum(a)
Syntax
sum(iterable, start)
Parameter Values
* iterable - Required. The sequence to sum
* start - Optional. A value that is added to the return value
Найти максимальное значение в списке
Python
max()
Найти минимальное значение в списке
Python
min()
Возвести значение в степень
Python
pow(4, 3) - 4 в степени 3
Syntax
pow(x, y, z)
Parameter Values
* x A number, the base
* y A number, the exponent
* z Optional. A number, the modulus
Найти абсолютное значение (преобразование отрицательного в положительное)
Python
abs()
abs(-7.25) = 7.25
Округлить значение
Python
round()
Получить номера букв английского алфавита
Python
The ord() function returns the number representing the unicode code of a specified character.
ord('a') - выдаёт 97
Поэтому проходим по списку, пропускаем букву через ord и вычитаем 96
for word in words:
ord(word) - 96Группирование через словари
Python
d = {}
for name in names:
key = len(name)
if key not in d:
d[key] = []
d[key].append(name)
Результат:
{7: ['raymond', 'matthew', 'melissa', 'charlie'], 6: ['rachel', 'judith'], 5: ['roger', 'betty']}
Альтернатива:
for name in names:
key = len(name)
d.setdefault(key, []).append(name)
Современная альтернатива:
from collections import defaultdict
d = defaultdict(list)
for name in names:
key = len(name)
d[key].append(name)Обновление множества переменных
Python
def fibonacci(n):
x, y = 0, 1
for i in range(n):
print x
x, y = y, x+yConcise expressive one-liners
Python
Raymond’s rule:
- One logical line of code equals one sentence in English
Solves two conflicting rules:
1. Don’t put too much on one line
2. Don’t break atoms of thought into subatomic particles
Основное в Zen of Python
Python - с каким типом данных происходит работа быстрее?
С tuple работа происходит быстрее, т.к. он неизменяем.