python_meet
753 subscribers
4 photos
6 links
Python под пивасик.

Три раза на неделе, без напрягов.
Download Telegram
Как объединить два словаря? #python

first_dictionary = {'apple': 'Антоновка1', 'season': 'осенний'}
second_dictionary = {'apple': 'Антоновка2', 'color': 'желтый'}

# для Python >= 3.9.0
merge_dictionary = first_dictionary | second_dictionary
# однаковый ключ apple, поэтому первое значение пропадает (
print(merge_dictionary)

# для Python >= 3.5.0
# распаковка словарей + конструктор нового словаря
merge_dictionary = { **first_dictionary, **second_dictionary }
print(merge_dictionary)


> {'apple': 'Антоновка2', 'season': 'осенний', 'color': 'желтый'}
> {'apple': 'Антоновка2', 'season': 'осенний', 'color': 'желтый'}
Как обойти отсутствие ключа в словаре? #python

text_str = "один два два"
frequency_dic = {}

for word in text_str.split():
# если такого ключа нет - получим 0+1
frequency_dic[word] = frequency_dic.get(word, 0) + 1

print(frequency_dic)


> {'один': 1, 'два': 2}
🔥1
Как отсортировать элементы по частоте? #python

from collections import Counter
result = Counter('Клалафу Клалалафа')

print(result) # словарь: значение-количество
print(result.most_common()) # отсортированный массив пар


> Counter({'а': 6, 'л': 5, 'К': 2, 'ф': 2, 'у': 1, ' ': 1})
> [('а', 6), ('л', 5), ('К', 2), ('ф', 2), ('у', 1), (' ', 1)]
👍1
Python - лучший второй язык для всего.
Python is the second best language for everything.

Джейк Вандерплас (автор Pandas) #famous
Выступление о гибкости Python (2021).
Ирония над универсальностью языка.
Какая разница между sort и sorted? #python

youth_fest_1957 = ['мир', 'дружба', 'жевачка']

# создаем новый лист, не меняем старый
fest_sorted = sorted(youth_fest_1957)
print(f'new list sorted: {fest_sorted}')
print(f'old list: {youth_fest_1957}')

# сортируем старый лист, меняем старое
youth_fest_1957.sort()
print(f'old sort list: {youth_fest_1957}')


> new list sorted: ['дружба', 'жевачка', 'мир']
> old list: ['мир', 'дружба', 'жевачка']
> old sort list: ['дружба', 'жевачка', 'мир']
Как перевернуть матрицу? #python

matrix_2x3 = [['1a', '1b', '1c'], ['2a', '2b', '2c']]
transparent_3x2 = zip(*matrix_2x3)
for matrix_row in transparent_3x2:
print(matrix_row)


> ('1a', '2a')
> ('1b', '2b')
> ('1c', '2c')
Python - голландский язык программирования.
👍3
Как отсортировать слова по длине? #python

sentence_split = "я учу питон каждый день".split()
# раскрываю список для печати
print(*sentence_split)

# анонимная функция = длинна слова для сортировки по убыванию
print(*sorted(sentence_split, key=len, reverse=True))


> я учу питон каждый день
> каждый питон день учу я
👍4
Программа не закончена, пока не задокументированна
Your code isn’t done until the docs are written.

Дэн Беккер (организатор Write the Docs) #famous
Конференция 2023 года.
Акцент на важности документации.
🔥1
Как получить длину всех слов? #python

sentence_split = "я учу питон каждый день".split()
print(*sentence_split, sep=', ')

# генератором получаем список чисел
word_len_list = map(len, sentence_split)
print(*word_len_list, sep=', ')

# из двух списков получаем список пар: слово-длинна
word_len_dic = dict(zip(sentence_split, list(word_len_list)))
print(word_len_dic)


> я, учу, питон, каждый, день
> 1, 3, 5, 6, 4
> {'я': 1, 'учу': 3, 'питон': 5, 'каждый': 6, 'день': 4}
Как получить только длинные слова? #python

sentence_split = "я учу питон каждый день".split()
print(*sentence_split, sep=', ')

# генератором перебираем список и оставляем только длинные слова
word_long_list = [word for word in sentence_split if len(word) > 4]
print(*word_long_list, sep=', ')


> я, учу, питон, каждый, день
> питон, каждый
👍4
Как сгруппировать слова по их длине? #python

sample_str = "раз два три четыре пять пять"
# используем генератор словарей по списку слов из строки ( dict comprehension )
word_len_dic = {word_str:len(word_str) for word_str in sample_str.split()}
# повторяющиейся слова - затираются!
print(word_len_dic)
# теперь перевернем словарь: слово:длина -> длина:слово
len_word_dic = {}
# для неуникальных ключей (длина), собираем значения в список
for word, word_len in word_len_dic.items():
len_word_dic[word_len] = len_word_dic.get(word_len, []) + [word]
print(len_word_dic)


> {'раз': 3, 'два': 3, 'три': 3, 'четыре': 6, 'пять': 4}
> {3: ['раз', 'два', 'три'], 6: ['четыре'], 4: ['пять']}
Как найти самое большое число в списке? #python

import heapq

score_list = [51, 33, 64, 87, 91, 75, 15, 49, 33, 82]

# 2 самых больших числа
print(heapq.nlargest(2, score_list))

# 3 числа заканчивающихся на минимальную цифру
print(heapq.nsmallest(3, score_list, key = lambda x: x%10))


> [91, 87]
> [51, 91, 82]
🔥1
Как сохранить настройки нарезки? #python

sample_str = 'Начало М_а_г_и_я конец'

# объект с настроками нарезки (начало, конец, шаг)
slice_settings = slice(len('Начало '), -len(' конец'), 2)

# применяем настройки к нашей строке (массив символов)
print(sample_str[slice_settings])


> Магия
🔥3
Как напечатать условие? #python

def is_positive(balance):
print("Еще!" if balance > 0 else "Хватит")

for i in range(3):
is_positive(2 -i)


> Еще!
> Еще!
> Хватит
💯4👾1
Как проверить список условий? #python

def check_parity(balance):
condition_list = [ balance > 0, 0 == balance % 2 ]
result_str = 'четный > 0' if all(condition_list) > 0 else 'нет'
print(f'{balance} -> {result_str}')

for i in range(3):
check_parity(i)


> 0 -> нет
> 1 -> нет
> 2 -> четный > 0
🔥1
Как поменять глобальную переменную внутри функции? #python

Используй global:

global_str = "global не поменялось"

def set_str():
global_str = "локально поменял"

def set_global_str():
global global_str
global_str = "локально поменял через global"

set_str()
print(global_str)
set_global_str()
print(global_str)


> global не поменялось
> локально поменял через global
🔥2
Как написать свой итератор? #python

class Dozen_iterator:
def __iter__(self):
self.item_str = 12
return self

def __next__(self):
if self.item_str > 36:
raise StopIteration
prev_item = self.item_str
self.item_str += 12
return prev_item


my_generator = Dozen_iterator()
for item in my_generator:
print(item)


> 12
> 24
> 36
🔥6
Зачем нужна безымянная лямбда-функция ? #python

# вместо обычной функции:

def calc_square(side_square):
return side_square*side_square

print(f'func {calc_square(2)}')

> func 4

# пишем безымянную функцию

square_lambda = lambda side_square: side_square**2

# square_lambda - название переменной, а не самой функции. Имя функции мы нигде не указываем, поэтому она безымянная
variable_lambda = square_lambda

print(f'lambda {variable_lambda(2)}')


> lambda 4