Don Python
74 subscribers
6 photos
1 file
19 links
Путь python разработчика после 30. Знания, обсуждения, книги, rock & roll
Download Telegram
🤕 [SHORT] Инвертирование словаря

Предположим, что наше приложение — это что-то там связанное с английским. У нас есть некоторый словарь в котором ключ — это английское слово, а значение — перевод этого слова:

animals = {
'cat': 'кот',
'dog': 'собака',
'mouse': 'мышь',
'elephant': 'слон',
}


Нам нужно чтобы было наоборот: ключи на русском, а значения на английском. Пишем простое выражение:

print({value: key for key, value in animals.items()})

# >>> {'кот': 'cat', 'собака': 'dog', 'мышь': 'mouse', 'слон': 'elephant'}


———

Good coding 🧑‍💻

#python #short #dict
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
🤕 [SHORT] Генерация алфавита. Функция chr()

Допустим вам для проекта нужно сгенерировать английский алфавит.

alphabet = {chr(i): i - 64 for i in range(65, 91)}


Эта строчка генерирует словарь с прописными буквами английского алфавита.

Функция chr() конвертирует целое число в Unicode-символ и возвращает его.


Юникод и кодировки в Python

———

Good coding 🧑‍💻

#python #short #dict #unicode
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍11
🤕 [SHORT] Разворот списка, 3 способа

С помощью метода reverse()

my_position = ['first', 'second', 'third']
my_position.reverse()

print(my_position)
# >>> ['third', 'second', 'first']


С помощью функции reversed()

sequence = [1, 2, 3, 4, 5, 6]
reverse_sequence = list(reversed(sequence))

print(reverse_sequence)
# >>> [6, 5, 4, 3, 2, 1]


С помощью среза

split_name = ['r', 'd', 'n', 'a', 's', 'k', 'e', 'l', 'a']
reverse_split_name = split_name[::-1]

print(reverse_split_name)
# >>> ['a', 'l', 'e', 'k', 's', 'a', 'n', 'd', 'r']


———

Good coding 🧑‍💻

#python #short #list
Please open Telegram to view this post
VIEW IN TELEGRAM
21
🤕 [SHORT] Двусторонняя очередь в Python

Класс deque (от "double-ended queue" - двухсторонняя очередь) в Python удобен для работы с коллекцией элементов, где важны операции добавления и удаления элементов в начале и в конце списка. Обычные списки делают это медленно, так как элементы приходится смещать, а deque оптимизирован под такие операции, выполняя их за O(1).

from collections import deque  

# Создаем deque и добавляем элементы
queue = deque([1, 2, 3])
queue.append(4) # добавляет 4 в конец
queue.appendleft(0) # добавляет 0 в начало

print(queue) # deque([0, 1, 2, 3, 4])

# Удаляем элементы
queue.pop() # удаляет последний элемент
queue.popleft() # удаляет первый элемент

print(queue) # deque([1, 2, 3])


———

Good coding 🧑‍💻

#python #short #list #libraries #deque #collections
Please open Telegram to view this post
VIEW IN TELEGRAM
3
⬆️ [ARTICLE] Поиск кратчайшего пути

Я славно поработал и написал 2 статьи посвященные алгоритму BFS (поиск в ширину) и алгоритму Дейкстры (поиск во взвешенных графах). Для меня лучший способ в чем то разобраться - это объяснить другим как это работает. Эти работы не исключение.

Краткая статистика

- 25 000 символов
- 3 600 слов
- 23 часа работы

———

Первая часть - Алгоритмы поиска путей на пальцах. Часть 1: Поиск в ширину

Первая часть - Алгоритмы поиска путей на пальцах. Часть 2: Алгоритм Дейкстры

———

📦 Ресурсы

Это всё что я использовал для написания материала и создания анимаций:

1. Алгоритмика — много материала об алгоритмах
2. Clippa — здесь можно доработать гифки
3. ChatGPT — все знают
4. Program4you — здесь можно создавать и анимировать графы
5. Теория графов — хороший материал для прочной базы
6. Двусторонняя очередь — статья о классе deque
7. Кучи и приоритетные очереди — статья о модуле heapq

———

Good coding 🧑‍💻

#python #info #algorithms #dijkstra #bfs #graphs #habr #articles
Please open Telegram to view this post
VIEW IN TELEGRAM
3
📦 [BOOK] «Python без проблем: решаем реальные задачи и пишем полезный код». Зингаро Д

Когда самостоятельно изучаешь программирование, в какой-то момент сталкиваешься с кризисом, когда нужно двигаться дальше, а что конкретно делать не понятно.

Эта книга будет хорошим продолжением, если вы только закончили изучение базового синтаксиса и хотели бы повторить и закрепить материал.

Автор книги изложил материал следующим образом:

1. Каждая глава начинается с урока. Не расстраивайтесь если вы уже знакомы с материалом. Каждый учитель объясняет по своему и всегда есть возможность узнать что то новое.

2. После каждого урока автор подробно разбирает несколько задач (2 - 3). Советую сначала пробовать решать их самостоятельно, а потом сверяться с решением автора.

3. В конце каждой главы приведен список задач, которые вы сможете решить усвоив материал из пройденного урока.

———

Книга на Яндекс Книгах — здесь

Купить бумажную версию — здесь

Английская версия бесплатно — здесь

Русская версия бесплатно — здесь

———

Также оставлю свой репазиторий с решенными задачами. Их около 100 там. Сверяйтесь и изучайте, но не списывайте.

Репозиторий

———

🧑‍💻 Good coding

#python #book #problems
Please open Telegram to view this post
VIEW IN TELEGRAM
3
🤕 [SHORT] Коротко о генерации паролей в python

Если вы вдруг решили написать в том или ином виде генератор паролей/токенов или других случайных значений, имеющих высокие требования к безопасности, не идите очивидным путем и не используйте модуль random.

Используйте модуль secrets. Почуму? Если коротко, то random создан для симуляции, а результат работы довольно предсказуем. А secrets используется для генерации криптографически надёжных случайных чисел.

Узнать больше можно:

Короткое объяснение — тут

Документаци — тут

———

🧑‍💻 Good coding

#python #secrets #random
Please open Telegram to view this post
VIEW IN TELEGRAM
3
🌡 [RESOURCES] Быть аналитиком данных

Моя подборка, которая поможет, как мне кажется, найти работу в сфере аналитики данных. Я сейчас сам всё это изучаю. Базовый Python уже понятен, нужно было выбирать направление для роста.

1. Актуальный, англоязычный курс — FREE Data Analyst Bootcamp. Если плохо с английским, открывайте плейлист в Яндекс браузере и слушайте в переводе.

2. Подробная карта для изучения инструментов связанных с аналитикой данных — Data Analyst Roadmap

3. Репозиторий с большой подборкой общедоступных наборов данных — awesome-public-datasets

4. Статья на Хабр с подборкой наборов данных - 52 датасета для тренировочных проектов

5. Сайт с большим количество датасетов — kaggle-datasets

———

🧑‍💻 Good coding

#python #resources #datasets #data_analyst
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
🚫 [ERROR] Python не может найти файл init.tcl

Вы можете никогда не использовать tkinter напрямую, но есть библиотеки, которые используют его по умолчания. Например matplotlib — библиотека для визуализации графиков.

Сегодня столкнулся с такой ошибкой:

...
_tkinter.TclError: Can't find a usable init.tcl in the following directories:
...
paths
...
This probably means that Tcl wasn't installed properly.


В моем случае это произошло, потому что вместе с Git я поставил MinGW, который идет вместе с пакетом Git for Windows. А MinGW поставляется с библиотеками Tcl/Tk. Из-за этого возник конфликт в переменных среды. Как я понял, если Git устанавливается на ПК вперед Python, то такого не происходит.

💊 Решение

1. Нажать win+i, что бы открыть настройки

2. Далее путь: Система — О системе — Дополнительные параметры системы — Переменные среды

3. Нажимаем создать в области системных переменных

4. Ввести название переменной: TCL_LIBRARY

5. Указать путь до папки. Что узнать путь, зайдите в диск, на который вы установили Python. Затем в поиске введите tlc. Найдите папку, которая находится в директории Python, а не в Git. В папке будут еще папки. Вам нужна с названием (на момент создания поста) tlc8.6.

В моем случае путь был такой:

C:\Users\Yastrebov\AppData\Local\Programs\Python\Python313\tcl\tcl8.6

6. Осталось сохранить, перезапустить IDE и если у вас была такая же проблема, то она должна решиться

———

🧑‍💻 Good coding

#python #error #tlc #tkinter #matplotlib
Please open Telegram to view this post
VIEW IN TELEGRAM
3
🤕 [SHORT] Сводная таблица как в Excel с помощью pandas

Представим что у на есть некоторый dataset c неопределенным количеством столбцов:

[..., 'Category', 'Region', 'Inventory Level', ...]


Задача: построить сводную таблицу (как на изображении), для отображения остатков (Inventory Level) во всех регионах для каждой категории и отобразить сумму остатков для каждой категории и каждого региона.

В Excel мы бы создали сводную таблицу, перетащили бы Category в область "Cтроки", Region в область "Столбцы", а Inventory Level в область "Значения".

🖥 С применением pandas решение будет выглядеть так:

import pandas as pd

df = pd.read_csv('retail_store_inventory.csv')

pivot_table = df.groupby(['Category', 'Region'])['Inventory Level'].sum().reset_index()

pivot_result = pivot_table.pivot(index='Category', columns='Region', values='Inventory Level')
pivot_result['Total'] = pivot_result.sum(axis=1)
pivot_result.loc['Total'] = pivot_result.sum(axis=0)


Dataset

Ссылка на набор данных

———

🧑‍💻 Good coding!

#python #pandas #data_analitycs #excel
Please open Telegram to view this post
VIEW IN TELEGRAM
2
data.rar
132.6 KB
🌡 [RESOURCES] Dataset. Продукция магазина Калина-Малина

В общем пытался устроится на должность аналитика данных в сеть магазинов, где я когда то поваром работал. Было бы забавно мне кажется. Так на любой вакансии, где есть пук про АЙ ТИ, конкуренция безумная, я решил не ограничиваться отправкой резюме.

Так как в вакансии было указано, что нужно знать pandas, я решил спарсить данные о продуктах с сайта и как раз с помощью pandas что то почистить, проанализировать. Бонусом сделал небольшую презентацию на 5 слайдов с не графиками и аналитикой.

В итоге даже не заслужил фразы "Мы одобрили другого кандидата, а ваше резюме отложили. Если вакансия снова откроется, то мы вам напишем".

Но никакого расстройства, прикольная практика вышла.

Репозиторий

Данные в прикрепе

———

🧑‍💻 Good coding!

#python #pandas #data_analitycs #resources #dataset
Please open Telegram to view this post
VIEW IN TELEGRAM