Python basics Flashcards
Сортировка списка
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, '-->', color
Faster: 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+y
Concise 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
- Beautiful is better than ugly.
- Explicit is better than implicit.
- Simple is better than complex.
- Complex is better than complicated.
Python - с каким типом данных происходит работа быстрее?
С tuple работа происходит быстрее, т.к. он неизменяем.