Hello World
1.66K subscribers
71 photos
6 videos
3 files
161 links
Be so good that you cannot be ignored. And then, go one step beyond.
Download Telegram
Channel created
​​​​Проверка на вхождение подстроки

Для того, чтобы проверить содержится ли подстрока в строке, можно воспользоваться оператором “in”, по аналогии с кортежем или листом.

#tricks
​​​​​​Лямбда-функции

Порой нужно передать функцию в качестве аргумента, либо сделать короткую (но сложную) операцию большое количество раз. В таком случае можно определить обычную функцию через def, а можно использовать лямбда-функцию.
У лямбда-функций есть несколько преимуществ, во-первых их можно передавать мгновенно (переменная не нужна), во-вторых, иногда они способны улучшить читаемость кода. Но злоупотреблять ими не стоит.

Лямбда-функции отлично сочетаются, например, с map.

#lambda
Списковые включения (list comprehensions)

Допустим, есть список, который необходимо превратить в список квадратов элементов. Можно, например, воспользоваться функцией map в сочетании с lambda.
numbers = [1,2,3,4,5]
squares = map(lambda item: item**2, numbers)


Этот код довольно короткий, но он все еще плохо читаем. К тому же мы вынуждены дополнительно определить лямбда-функцию.
К счастью есть более красивый способ.
numbers = [1,2,3,4,5]
squares = [number*number for number in numbers]


Даже человек без знания python легко определит что делает этот код.

Также с помощью списковых включений можно фильтровать список.
numbers = [1,2,3,4,5]
evens = [number for number in numbers if number%2==0]


Да, это все можно было сделать с помощью цикла for. Однако, подобный подход совсем не гарантирует четкий и лаконичный код.

#list
​​Цепочки сравнений (chaining comparison)

Python позволяет составлять произвольные цепочки сравнений, читаются они слева направо, a<b<c разбивается на два выражения: a<b and b<c. Обратите внимание, если a<b возвращает False, b<c уже не оценивается.
https://en.wikipedia.org/wiki/Short-circuit_evaluation
​​Параметры в iter

Обычно built-in функция iter() возвращает итератор от переданной последовательности.
Однако, можно передать два параметра. В таком случае, первый параметр должен быть callable-объектом, а второй — результатом вызова первого объекта, на котором нужно остановить итерирование.
Как пример, построчное считывание из файла до первого вхождения пустой строчки.
#iterator