Python Hub - сборище Питонистов
1.72K subscribers
657 photos
1 video
37 files
278 links
Уголок счастья для любого питониста.

Сотрудничество или заказы: @leshunist

https://shcoder.dev - студия разработки ShcoderDevelopment

https://t.me/pythonhub_chat - чат
Download Telegram
Python Hub - сборище Питонистов
Photo
Разбор 👨‍💻

Именованные кортежи ( namedtuple ) — это подкласс кортежей в Python. У них те же функции, что и у обычных, но их значения можно получать как с помощью имени (через точку, например, . name ), так и с помощью индекса (например [0] ).

Мы создали кортеж obj, элементы которого позже достали через точку (.), а не индекс.
В param1 был текст "2", в param2 - "3".
Получим 23.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🔥 Модуль collections в Python? [2]


Одной из главных функций Collections Counter является подсчет элементов в коллекции. Для этого необходимо импортировать модуль collections и создать объект Counter с передачей коллекции в качестве аргумента. В результате выполнения функции мы получим словарь, где ключами будут элементы коллекции, а значениями — их количество. Рассмотрим пример:

from collections import Counter

lst = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
counted_elements = Counter(lst)
print(counted_elements)


В результате выполнения этого кода мы получим следующий словарь:

{1: 1, 2: 2, 3: 3, 4: 4}


➡️ Переопределение элементов коллекции

С помощью Collections Counter мы также можем переопределить элементы коллекции. Для этого необходимо создать объект Counter для исходной коллекции и передать новые значения с помощью метода update(). Рассмотрим пример:

from collections import Counter

lst = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
counted_elements = Counter(lst)
print(counted_elements)

counted_elements.update({2: 5, 5: 1})
print(counted_elements)


В результате выполнения этого кода мы получим следующий словарь:

{1: 1, 2: 2, 3: 3, 4: 4}
{1: 1, 2: 7, 3: 3, 4: 4, 5: 1}


➡️ Нахождение n наиболее часто встречающихся элементов

Collections Counter также позволяет находить n наиболее часто встречающихся элементов в коллекции. Для этого необходимо использовать метод most_common(n), где n — количество наиболее часто встречающихся элементов, которые нужно найти. Рассмотрим пример:

from collections import Counter

lst = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
counted_elements = Counter(lst)

most_common_elements = counted_elements.most_common(2)
print(most_common_elements)


В результате выполнения этого кода мы получим следующий список:

[(4, 4), (3, 3)]
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Что выдаст код выше?
Anonymous Quiz
5%
1 2
21%
u l y
26%
u l
23%
u g u
12%
u g
7%
Error
7%
Не знаю
👍1🥰1
Python Hub - сборище Питонистов
Photo
Разбор 👨‍💻

Цикл for будет пробегать по среду слова "July". Изменение переменной а на "August" никак не повлияет на изначально заданное условие цикла.
Срез 1:3 - срез с 1 индекса по 3 (не включая). Получим буквы ul. (индексация же с 0)

Ответ: ul
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3👌1
Что выдаст код выше?
Anonymous Quiz
60%
0
11%
1
6%
-1
9%
5
9%
Error
6%
Не знаю
3👍1
Python Hub - сборище Питонистов
Photo
Разбор 👨‍💻

Целочисленное деление говорит нам о том, сколько переменная b может целиком поместиться в переменной a.
Ответ: 0 (раз)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🟢 Что такое GIL?


GIL, или Global Interpreter Lock, является механизмом в CPython, который ограничивает выполнение Python-кода одним потоком в один момент времени.
Это означает, что даже если у вас есть несколько потоков в Python-программе, только один поток может выполняться в любой момент времени.

➡️ Как работает GIL?

GIL - это блокировка, которая накладывается на интерпретатор Python, чтобы предотвратить одновременное выполнение Python-кода несколькими потоками. Все объекты Python имеют ссылки на них, которые хранятся в глобальном пространстве имен. GIL гарантирует, что только один поток может получить доступ к этому глобальному пространству имен в любой момент времени. Когда поток хочет выполнить Python-код, он должен получить эту блокировку. Если блокировка уже занята другим потоком, поток будет ожидать, пока блокировка не освободится. Когда блокировка освобождается, следующий поток может получить ее и продолжить выполнение Python-кода.

➡️ Влияние GIL на производительность

GIL может оказывать негативное влияние на производительность Python-программ. Это связано с тем, что только один поток может выполнять Python-код в любой момент времени. Если у вас есть множество потоков, которые ожидают доступа к GIL, это может привести к значительному снижению производительности вашей программы.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Что выдаст код выше?
Anonymous Quiz
36%
8
17%
9
28%
10
8%
12
6%
Error
6%
Не знаю
👍3
🟢 Что такое сборщик мусора и как он работает в Python?

В программировании, сборщик мусора - это механизм, который автоматически удаляет объекты, которые больше не используются программой, освобождая память. Сборщик мусора очень полезен для устранения утечек памяти и других проблем с управлением памятью.

В Python сборка мусора - это часть виртуальной машины Python. Сборка мусора в Python работает следующим образом:

1. Когда объект создается, он помещается в "кучу" (heap).
2. Когда объект больше не используется, сборщик мусора помечает его как "мусор".
3. Сборщик мусора периодически запускается и проверяет все объекты в куче.
4. Если объект помечен как "мусор", сборщик мусора удаляет его из памяти.

Сборка мусора в Python происходит автоматически и не требует дополнительного управления со стороны разработчика. Однако, если вы работаете с большими объемами данных, может быть полезно вручную вызывать сборщик мусора с помощью метода gc.collect().

Сборщик мусора имеет некоторые недостатки. Он может замедлять работу программы, так как сборка мусора занимает время процессора. Кроме того, сборка мусора может быть непредсказуемой, особенно если программа использует много памяти.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Python Hub - сборище Питонистов
Photo
Разбор 👨‍💻

К переменной result на каждом четном числе добавляется единица в первом if.
Во втором if к каждому нечетному числу добавляется двойка.

Но!
После второго if есть else, который срабатывает на четные числа и добавляет к результату еще единицу.

Вывод: на каждом четном и нечетном числе происходит увеличение на 2.
Какие числа перебирает цикл? —> 1 2 3 4 5
5 чисел * 2 = 10
Ответ: 10
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
📔 Как можно импортировать библиотеки в Python?

➡️ Использование ключевого слова import

Ключевое слово import - это основной способ импортирования в Python. Чтобы импортировать библиотеку, достаточно написать ключевое слово import, за которым следует имя библиотеки:

import имя_библиотеки


Например, следующий код импортирует библиотеку numpy:

import numpy


➡️ Использование ключевого слова from

Кроме того, можно использовать ключевое слово from для импортирования конкретных функций или классов из библиотеки. Это может быть полезно, если вы знаете, что используете только определенные функции из библиотеки. Чтобы использовать ключевое слово from, напишите его, за которым следует имя библиотеки, затем ключевое слово import, и, наконец, имя функции или класса, который вы хотите импортировать:

from имя_библиотеки import имя_функции


Например, следующий код импортирует только функцию array из библиотеки numpy:

from numpy import array


➡️ Использование псевдонимов

Иногда библиотеки имеют длинные и сложные имена, которые могут затруднить чтение вашего кода. В таких случаях можно использовать псевдонимы, чтобы создать более короткие имена для библиотек. Для создания псевдонима для библиотеки используйте ключевое слово as:

import имя_библиотеки as псевдоним


Например, следующий код импортирует библиотеку pandas и создает для нее псевдоним pd:

import pandas as pd
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Python Hub - сборище Питонистов
Photo
Разбор 👨‍💻

Функция callable() возвращает True , если указанный объект вызываемый, в противном случае она возвращает значение False.
int() —>
5() —>


Ответ: True False
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
📑 Задача на Python

Напишите функцию, которая удаляет пробелы из строки, а затем возвращает результирующую строку.

Примеры:

Input --> Output
"8 j 8 mBliB8g imjB8B8 jl B" --> "8j8mBliB8gimjB8B8jlB"
"8 8 Bi fk8h B 8 BB8B B B B888 c hl8 BhB fd" --> "88Bifk8hB8BB8BBBB888chl8BhBfd"
"8aaaaa dddd r " --> "8aaaaaddddr"

Ответ в комменты
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Python Hub - сборище Питонистов
📑 Задача на Python Напишите функцию, которая удаляет пробелы из строки, а затем возвращает результирующую строку. Примеры: Input --> Output "8 j 8 mBliB8g imjB8B8 jl B" --> "8j8mBliB8gimjB8B8jlB" "8 8 Bi fk8h B 8 BB8B B B B888 c hl8 BhB fd" --> "…
Решения задачи можно было увидеть в комментариях, но продублирую их тут

Первый способ - решение через метод .replace, который позволяет заменить одни элементы в строке на другие.

def no_string_space(x):
return x.replace(" ", "")

a = input()
print(no_string_space(a))

Второй способ - классический цикл, где мы пробегаем по элементам и проверяем, что это не пробел. Если так, то добавляем в результат.

def no_string_space(x):
c = ""
for i in x:
if i != ' ':
c += i
return c

a = input()
print(no_string_space(a))
👍3
💬 Напоминаю, что у нас есть бот-предложка, куда вы можете отправлять свои пожелания, замечания, советы, вопросы, мемы и многое другое.

https://t.me/Python_Hub_bot
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2