Python Community
12.9K subscribers
1.25K photos
38 videos
15 files
738 links
Python Community RU - СНГ сообщество Python-разработчиков

Чат канала: @python_community_chat

Сотрудничество: @cyberJohnny и @Sergey_bzd

РКН реестр:
https://knd.gov.ru/license?id=67847dd98e552d6b54a511ed&registryType=bloggersPermission
Download Telegram
Что выведет код выше?
Anonymous Quiz
38%
3
13%
2
4%
1
34%
Ошибку
11%
Узнать ответ
⚡️ Собираем данные о системе

psutil
— утилита, позволяющая получить данные о системе и о её состоянии: от количества ядер процессора, до текущей нагрузки на сеть.

Установка: pip install psutil

Данный модуль стабильно работает на большинстве операционных систем, но функционал у них всё таки отличается.

Например, есть функция psutil.Process.rlimit, работающая только в ОС Linux и FreeBSD, но не работающая в Windows.

Подробнее о таких особенностях можно почитать на сайте документации, а определить используемую систему можно с помощью констант, которые написаны тут.

#миниурок #psutil
⚡️ Задачка с собеседования | #Medium

Условие:

Ваша задача — написать функцию, которая подсчитывает количество повторяемых элементов. Желательно выполнить задачу без использования сторонних модулей.

Примеры:

dup_count('abcde') -> 0
dup_count('indivisibility') -> 1
dup_count('Indivisibilities') -> 2
dup_count('aA11') -> 2

📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇

#Задачка_с_собеседования
⚡️ Ответ на предыдущую задачу
⚡️ Переопределяем операторы

В Python почти каждый оператор — метод класса. Например, + — это __add__, сравнение (==) — это __eq__, а with__enter__, __exit__.

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

Подробнее об используемых метода можно найти на странице документации оператора, как с with, или в документации модуля operators, которые предоставляются в виде функций.

#теория #operators
⚡️ Модуль collections, класс Counter

collections
— модуль, предоставляющий специализированные типы данных. Он хранит в себе различные классы, такие как namedtuple, counter, deque и множество других. Об одном из них мы и поговорим.

Counter — словарь, позволяющий узнать какое количество раз повторяются элементы в итерируемом объекте (list, string).

Получить данные можно с помощью квадратных скобочек. Если же элемент не найден, он возвращает 0.

most_common(n) — возвращает n самых повторяемых объектов.

elements() — возвращает итератор для всех элементов.

#миниурок #Counter
⚡️ Задачка с собеседования | #Medium

Условие:

Ваша задача — написать функцию, которая принимает список из цифр, которые являются одним числом. Ей необходимо добавить к числу 1. В результате функция возвращает список из цифр.

Примеры:

add_one([1, 2, 3, 4]) -> [1, 2, 3, 5]
add_one([9, 9, 9, 9]) -> [1, 0, 0, 0, 0]
add_one([0]) -> [1]
add_one([9]) -> [1, 0]

📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇

#Задачка_с_собеседования
⚡️ Ответ на предыдущую задачу
⚡️ Модуль collections. Класс OrderedDict

Мы уже рассказывали про модуль collections, а если конкретнее — класс Counter. В этот раз разберём OrderedDict.

OrderedDict — словарь, особенный тем, что все ключи находятся в том же порядке, в котором и добавлялись.

popitem() — Возвращает и удаляет последний элемент из упорядоченного списка.

move_to_end(key) — перемещает ключ в конец. Если передан параметр last, перемещает ключ в начало.

Подробнее о данном классе можете почитать тут.

#миниурок #collections
Что выведет код выше?
Anonymous Quiz
66%
<type 'dict'>
27%
<class 'set'>
7%
Узнать ответ
⚡️ Оператор yield

yield
— оператор, позволяющий создавать генераторы. Благодаря нему функция может вернуть сразу несколько значений.

Записывается он вместо return, принимая число, которое должна вернуть функция.

Если же обычный метод возвращает какое-то значение, то генератор возвращает себя, благодаря чему мы можем пройтись по нему используя циклы или функцию next().

#теория #итераторы
⚡️ Задачка с собеседования | #Medium

Условие:

Ваша задача — написать функцию, которая "переворачивает" биты в числе. Кол-во битов в чисел всегда 32.

Примеры:

reverse_bits(43261596) -> 964176192
00000010100101000001111010011100 -> 00111001011110000010100101000000
reverse_bits(4294967293) -> 3221225471
11111111111111111111111111111101 -> 10111111111111111111111111111111

📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇

#Задачка_с_собеседования
⚡️ Ответ на предыдущую задачу
⚡️ Модуль collections. Класс deque

Раннее мы писали про Counter и OrderedDict, настало время поговорить про deque.

deque — класс, предоставляющий двойную очередь (то есть элементы можно брать и с начала и с конца). Его основное преимущество над списком — скорость при изменении размера. Добавление и удаление элементов имеет O(1), а у списка — O(n).

append(x), appendleft(x) — добавляет элемент в конец/начало.

pop(), popleft() — возвращает и удаляет элемента с конца/начала очереди.

rotate(n=1) — перемещает n объектов с конца в начало очереди

#миниурок #collections
Что выведет код выше?
Anonymous Quiz
6%
1 4 2
22%
1 2 3 4
27%
1 3 4 2
28%
Ошибку
18%
Узнать ответ
⚡️ Модуль collections. Тип namedtuple

Часто, используя кортежи, мы берём значения с помощью индексаторов (квадратных скобочек), что выглядит не особо красиво и совсем непонятно для другого программиста.

Чтобы исправить эту проблему, Python разработчики придумали namedtuple, который предоставляет тип кортежа, в котором данные можно получить как атрибуты.

namedtuple(typename, field_names) — создаёт тип кортежа с именем typename и атрибутами field_names, и возвращает тип.

#миниурок #collections