Warning: preg_grep(): Compilation failed: quantifier does not follow a repeatable item at offset 134 in /var/www/tg-me/post.php on line 75
Библиотека питониста | Python, Django, Flask | Telegram Webview: pyproglib/6587 -
Telegram Group & Telegram Channel
This media is not supported in your browser
VIEW IN TELEGRAM
🔹 How to: как работают генераторы в Python

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

➡️ Принцип работы
Вместо возврата всех значений сразу, генератор использует yield, который приостанавливает выполнение функции, сохраняя её состояние:
def simple_generator():
print("Первый yield")
yield 1
print("Второй yield")
yield 2

gen = simple_generator()
print(next(gen)) # Первый yield → 1
print(next(gen)) # Второй yield → 2


При вызове next() выполнение продолжается с места, где остановилось. Это позволяет работать с последовательностями, не загружая их полностью в память.

➡️ Пример: Фибоначчи на генераторах
def fibonacci_generator(limit):
a, b = 0, 1
while a < limit:
yield a
a, b = b, a + b


Такой генератор можно использовать для обработки больших последовательностей без лишних затрат памяти.

➡️ Генераторы vs. списки
Генераторы экономят память, так как не хранят все элементы в памяти:
import sys

def list_numbers(n):
return [i for i in range(n)]

def generator_numbers(n):
return (i for i in range(n))

print(sys.getsizeof(list_numbers(1000000))) # 8448728 байт
print(sys.getsizeof(generator_numbers(1000000))) # 208 байт


Разница очевидна: генератор занимает всего 208 байт, тогда как список — 8+ мегабайт!

➡️ Генераторные выражения
Аналогично списковым включениям, но работают лениво:
squares_list = [x * x for x in range(10)]  # Обычный список
squares_gen = (x * x for x in range(10)) # Генератор


➡️ Комбинирование генераторов
С помощью itertools генераторы можно объединять и фильтровать:
from itertools import chain, filterfalse

result = chain((x * x for x in range(10)), (y + 10 for y in range(5)))
odd_squares = filterfalse(lambda x: x % 2 == 0, (x * x for x in range(10)))



➡️ Когда использовать генераторы
— Обработка больших данных без перегрузки памяти
— Потоковая обработка (например, чтение файлов)
— Создание бесконечных последовательностей
— Оптимизация скорости и эффективности кода

Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM



tg-me.com/pyproglib/6587
Create:
Last Update:

🔹 How to: как работают генераторы в Python

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

➡️ Принцип работы
Вместо возврата всех значений сразу, генератор использует yield, который приостанавливает выполнение функции, сохраняя её состояние:

def simple_generator():
print("Первый yield")
yield 1
print("Второй yield")
yield 2

gen = simple_generator()
print(next(gen)) # Первый yield → 1
print(next(gen)) # Второй yield → 2


При вызове next() выполнение продолжается с места, где остановилось. Это позволяет работать с последовательностями, не загружая их полностью в память.

➡️ Пример: Фибоначчи на генераторах
def fibonacci_generator(limit):
a, b = 0, 1
while a < limit:
yield a
a, b = b, a + b


Такой генератор можно использовать для обработки больших последовательностей без лишних затрат памяти.

➡️ Генераторы vs. списки
Генераторы экономят память, так как не хранят все элементы в памяти:
import sys

def list_numbers(n):
return [i for i in range(n)]

def generator_numbers(n):
return (i for i in range(n))

print(sys.getsizeof(list_numbers(1000000))) # 8448728 байт
print(sys.getsizeof(generator_numbers(1000000))) # 208 байт


Разница очевидна: генератор занимает всего 208 байт, тогда как список — 8+ мегабайт!

➡️ Генераторные выражения
Аналогично списковым включениям, но работают лениво:
squares_list = [x * x for x in range(10)]  # Обычный список
squares_gen = (x * x for x in range(10)) # Генератор


➡️ Комбинирование генераторов
С помощью itertools генераторы можно объединять и фильтровать:
from itertools import chain, filterfalse

result = chain((x * x for x in range(10)), (y + 10 for y in range(5)))
odd_squares = filterfalse(lambda x: x % 2 == 0, (x * x for x in range(10)))



➡️ Когда использовать генераторы
— Обработка больших данных без перегрузки памяти
— Потоковая обработка (например, чтение файлов)
— Создание бесконечных последовательностей
— Оптимизация скорости и эффективности кода

Библиотека питониста #буст

BY Библиотека питониста | Python, Django, Flask


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/pyproglib/6587

View MORE
Open in Telegram


Библиотека питониста | Python Django Flask Telegram | DID YOU KNOW?

Date: |

If riding a bucking bronco is your idea of fun, you’re going to love what the stock market has in store. Consider this past week’s ride a preview.The week’s action didn’t look like much, if you didn’t know better. The Dow Jones Industrial Average rose 213.12 points or 0.6%, while the S&P 500 advanced 0.5%, and the Nasdaq Composite ended little changed.

What is Secret Chats of Telegram

Secret Chats are one of the service’s additional security features; it allows messages to be sent with client-to-client encryption. This setup means that, unlike regular messages, these secret messages can only be accessed from the device’s that initiated and accepted the chat. Additionally, Telegram notes that secret chats leave no trace on the company’s services and offer a self-destruct timer.

Библиотека питониста | Python Django Flask from us


Telegram Библиотека питониста | Python, Django, Flask
FROM USA