<MyRusakov.ru />

Программирование на C++ с Нуля до Гуру

Программирование на C++ с Нуля до Гуру

Данный курс научит Вас программировать на языке C++, который, несмотря на свой почтенный возраст, необычайно сильно востребован. Курс состоит из 6 разделов, посмотрев которые и выполнив все упражнения, Вы с нуля освоите этот язык и сможете создавать самые разные проекты любой сложности на C++.

Дополнительно к курсу идёт вспомогательная система, которая не даст Вам забросить начатое на полпути.

Также к курсу идёт Бонус "Программирование на C++ в Unreal Engine", в котором Вы научитесь создавать игры на C++ с использованием этого движка.

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Зачем Вы изучаете программирование/создание сайтов?

Выражение генератор в Python. Часть 2

Выражение генератор в Python. Часть 2

В прошлой статье мы рассмотрели основные особенности выражения генератора в Python, и его отличия от генератора списков. Основное преимущество данного элемента в языке Python, является способ которым он использует память компьютера. Так функция next() является своего рода точкой выхода данных. Каждый вызов функции выводит одну порцию информации, после чего запоминает текущую позицию вызванного элемента. Таким образом память компьютера в каждый момент будет заполнена лишь некоторой частью из большого массива данных. В самой конструкции она скрыта от глаз пользователя. Проиллюстрируем данную особенность выражения генератора на примере вычисления суммы цифр из некоторого промежутка:


# создадим список  

v = list(range(99999999))

# вывод 
MemoryError 

# происходит  переполнение памяти в Python

# то же самое и с генератором списка
b = [i**2 for i in range(99999999)]

# создадим **выражение генератор**
b = (i**2 for i in range(99999999))

print(sum(b))

# вывод 
333333183333354999999

# для  итерации по элемента необходимо создать новый генератор так как возможность итерации исчерпана  в предыду-
# щем примере
b = (i**2 for i in range(9999999)) 

for x in b:
  print(x)

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


# создадим список с названиями некоторых сайтов и уберем знаки **протокола https**, отбросив домен **"net"**.

b = ['https://www.example1.com','https://www.example2.net',
     'https://www.example3.com','https://www.example4.com',
     'https://www.example5.com','https://www.example6.net']


z = (x.split('//')[1] for x in b if '.com' in x)

for i in z:
  print(i)

# вывод 
www.example1.com
www.example3.com
www.example5.com
www.example4.com

Для более наглядного представления преимуществ выражения генератора создадим список из элементов нашего диска D:


import os  # импортируем модуль для работы в операционной системе  

l = [x for x in os.walk('D:\\')] # генерируем список 

l.__sizeof__()

#вывод

257272


s = (x for x in os.walk('D:\\')) # выражение генератор

s.__sizeof__()

# вывод 

32


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

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

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

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (0):

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.