Python Lounge: работа и стажировки для программистов
Kanalga Telegram’da o‘tish
Здесь можно найти интересующую вас работу и стажировки для программистов, а так же полезные статьи про Python. Размещение вакансии только - @perezvonyubot Ссылка на канал: @python_lounge Мы входим в сеть promopoisk.com Реклама: @adtgassetsbot
Ko'proq ko'rsatish3 706
Obunachilar
Ma'lumot yo'q24 soatlar
-127 kun
-1530 kun
Postlar arxiv
Часто бывает очень удобно использовать namedtuple. Например, у вас есть словарь по типу "имя": "оценка", и вы хотите сортировать по "оценке".
import collections
Player = collections.namedtuple('Player', 'score name')
d = {'John': 5, 'Alex' : 10, 'Richard': 7}
Сортировка с наименьшей оценкой сначала:
worst = sorted(Player(v ,k) for (k, v) in d.items())Сортировка по наивысшему рангу:
best = sorted([Player(v, k) for (k, v) in d.items()], reverse=True)Теперь вы можете получить имя и оценку следующим образом:
player = best[1] player.name # Out: 'Richard' player.score # Out: 7
Статья рекомендуется всем тем, кто проводит много времени сидя на компьютером, да и не только, потому что поддерживать своё состояние необходимо всем
Здоровье программиста
Начиная с Python 3.5, есть возможность использовать распаковку со словарями и списками.
In: {**{'a': 1}, 'b': 2, **{'c': 3}}
Out: {'a': 1, 'b': 2, 'c': 3}
In: [1, 2, *[3, 4]]
Out: [1, 2, 3, 4]
Для словарей эта форма даже более мощная, чем функция dict, поскольку она позволяет переопределять значения:
In: {**{'a': 1, 'b': 1}, 'a': 2, **{'b': 3}}
Out: {'a': 2, 'b': 3}Если dict запоминает порядок элементов в Python3.6 +, то тогда зачем может понадобится collection.OrderedDict? Вот зачем:
>>> OrderedDict(a=1, b=2) == OrderedDict(b=2, a=1) False >>> dict(a=1, b=2) == dict(b=2, a=1) True
В этой статье мы разбираем основы работы с изображениями на Python и в частности смотрим на достаточно удобный модуль Pillow
Обработка изображений с помощью Pillow
В Python имя переменной может состоять из одного подчеркивания: _. Хотя обычно такие имена не достаточно описательны и не должны использоваться, есть по крайней мере три случая, когда _ имеет общепринятый смысл.
Во-первых, интерактивные интерпретаторы Python используют _ для хранения результата последнего выполненного выражения:
>>> 2 + 2 4 >>> _ 4Во-вторых, руководство модуля gettext рекомендует псевдоним его функции gettext() для _(), чтобы минимизировать загромождение вашего кода. В-третьих, _ используется, когда вам нужно придумать имена для значений, которые вам не нужны:
for _ in range(10):
print('Hello!')В Python блок else может быть представлен не только после if, но и после for и while. Код внутри else выполняется, только если цикл не был прерван с помощью break.
Типичный пример - поиск чего-либо в цикле с использованием break при нахождении:
for х in [2, 3, 4, 5]:
if x % 2 == 1:
print (x)
break
else:
print('Нет нечётных элементов в списке')
# Output: 3
for х in [2, 4, 6]:
if x % 2 == 1:
print(x)
break
else:
print('Нет нечётных элементов в списке')
# Output: Нет нечётных элементов в спискеВ этот раз мы с вами поговорим о декораторах, которые используются повсеместно практически во всех Python приложениях
Декораторы #урок 18
Иногда приходится писать код с несколькими контекстными менеджерами, что выглядит не особо лаконично:
with open('f') as f:
with open('g') as g:
with open('h') as h:
pass
Начиная с Python 2.7 и 3.1, вы можете использовать всего один with:
o = open
with o('f') as f, o('g') as g, o('h') as h:
pass
До этого вы могли бы использовать функцию nested из contextlib:
from contextlib import nested
with nested(o('f'), o('g'), o('h')) as (f, g, h):
passIn : int('୧৬𝟙༣')
Out: 1613
0, 1, 2, 3, 4, 5, 6, 7, 8, 9 - не единственные символы, которые считаются цифрами. Python следует правилам Юникода и обрабатывает несколько сотен символов как цифры, полный список вот здесь.
Это влияет на такие функции, как int, unicode.isdecimal и даже re.match:
In : int('෯')
Out: 9
In : '٢'.isdecimal()
Out: True
In : bool(re.match('\d', '౫'))
Out: TrueФункция exit создана для удобства работы в интерактивном режиме, однако не рекомендуется использовать её внутри скриптов. По факту она также просто поднимают исключение, и при попытке вызова без скобок напишут подсказку о правильном способе выхода из интерпретатора:
>>> exit Use exit() or Ctrl-D (i.e. EOF) to exit >>> exit() nameless@pycoders:~$Использовать sys.exit стоит потому, что эта функция лежит в стандартном модуле и будет всегда там доступна. Также это довольно явный способ выразить своё желание завершить программу.
import sys
try:
# code
except:
sys.exit()Если вы хотите итерировать несколько, например, списков, то функция zip станет хорошим выбором. Она возвращает новый список кортежей, в которых находятся попарно элементы из списков.
nums = [1, 2, 3]
words = ['one', 'two', 'three']
for w, n in zip(words, nums):
print(f'{w} = {n}')
# one = 1
# two = 2
# three = 3
Обратите внимание, что zip принимает итерируемые объекты как отдельные аргументы, а не как список аргументов. Чтобы распаковать значения, вы можете использовать оператор *.
list(zip(*zip(words, nums)))
# [('one', 'two', 'three'), (1, 2, 3)]Изучаем две мощные функции map и filter, а также затрагиваем тему анонимных lambda-функций
Map и filter #урок 17
12 небольших фишек для улучшения твоего кода
1. Обмен значений
x, y = 1, 2 x, y = y, x2. Получение строки из списка
a_list = [‘I’, ‘like’, ‘python’, ‘programming’] a_string = “ “.join(a_list)3. Разбиение строки на список
a_string = ‘I like python programming’ a_list = a_string.split()4. Инициализация листа каким либо значением
[0]*1000 # лист, заполненный 1000 нулями [1]*1000 # лист, заполненный 1000 единицами5. Слияние словарей
x = {‘a’:1, ‘b’:2}
y = {‘c’:3, ‘d’:4}
z = {**x, **y}
6. Переворачивание строки
a = ‘My string’ a = a[::-1]7. Возврат нескольких переменных из функции
def test(x,y):
return x,y
a,b = test(1,2)
8. Итерирование по словарю
a_dict = {‘a’:1, ‘b’:2, ’c’:3}
for k, v in a_dict.items():
print(‘{0}:{1}’.format(k, v))
9. Инициализация пустых контейнеров
a_list = list() a_dict = dict() a_set = set() a_tuple = tuple()10. Удаление символов в конце строки
my_string = ‘My string///‘ my_string.strip(‘/‘)11. Проверка занимаемой объектом памяти
import sys x = 1 print(sys.getsizeof(x))12. Нахождение наиболее частого элемента в списке
a_list = [1, 2, 3, 1, 1, 4, 1, 4, 4, 1] print(max(set(a_list), key=a_list.count))#tips
Сегодня мы разберем с виду сложную, но легкую в использовании конструкцию, которую можно применить практически везде
*args, **kwargs #урок 16
Практически самая популярная конструкция в Python, которую применяют в каждой плюс-минус серьезной программе
"If name main" #урок 15
Напоминаю, что у меня есть два собственных телеграм бота. Настоятельно прошу протестировать и написать мне, что думаете насчет этих проектов (ссылка на меня в описании канала).
@tweather_bot - основной проект, выдает погоду офигенском в визуальном формате, а фишка в том, что можно искать не только по городу, но и по улице или даже названию музея. Написал совместно основателем канала @dopamine_lacking.
@CasualCatsBot - простой и забавный бот, который выдает случайного котика из интернета. Написал быстренько чисто для расслабона, однако вышло прикольно.
Сортировка пузырьком
В Python уже есть встроенные функции сортировок массивов sort() и .sorted(), но достаточно важно самому знать хотя бы несколько реализаций.
Суть алгоритма в том, что совершается несколько проходов по массиву. При проходе последовательно сравниваются пары элементов в массиве и в случае несоответствия выбранному порядку меняются местами. Если пары элементов находятся в верном порядке, то ничего не происходит. В результате первого прохода максимальный элемент окажется в конце, то есть всплывет словно пузырек. Затем все повторяется до того момента пока весь массив не будет отсортирован. Последний проход будет по отсортированному массиву.
def bubble_sort(array):
for i in range(len(array), 0, -1):
for j in range(1, i):
if array[j - 1] > array[j]:
tmp = array[j-1]
array[j-1] = array[j]
array[j] = tmp
return array
Для наглядности визуальная реализация сортировки представлена ниже. #алгоритмОператор pass делает абсолютно ничего, то есть совсем ничего. В ходе исполнения данного оператора ничего не происходит, поэтому он может использоваться в качестве некой заглушки в тех местах, где это синтаксически необходимо.
Например, вам надо сделать несколько функций, вы написали def'ы и названия, но сам код еще не успели, однако программу надо запустить и проверить что-то другое. Вот тут и понадобится pass.
def func():
pass
Ну или в конструкции try-except, чтобы просто проигнорировать и никак не обрабатывать ошибку в программе.
try:
any_function()
except:
pass
В общем, полезная штука, используйте.Надеюсь, за прошедшее время вы успели разобрать предыдущий материал, а сейчас - документирование функций и области видимости
Функции: часть 3 #урок 14
