Модуль 9.1 Выражения-генераторы.
Запишите выражение для генератора, который бы возвращал целые числа от 2 до 10 000 с шагом 1 (то есть, 2, 3, 4, …, 10 000). Присвойте этот генератор переменной gen.
Вызывать генератор и отображать что-либо на экране не нужно, только задать его.
# Обратите внимание, что мы начинаем с 2, так как 1 - это не простое число, и оно не будет входить в результат генератора. Кроме того, мы используем скобки () вместо квадратных скобок [], чтобы создать генератор, а не список. gen = (i for i in range(2, 10001))
На вход программы поступают два целых числа a и b (a < b), записанные в одну строчку через пробел. На их основе запишите генератор для формирования квадратов чисел в диапазоне [a; b].
Преобразуйте этот генератор в кортеж чисел (без использования операторов циклов) и присвойте эту коллекцию переменной tp.
P. S. На экране ничего отображать не нужно, только создать кортеж на основе генератора.
# ввод значений a и b (переменные a и b не менять!) a, b = map(int, input().split()) # создаем генератор sq_gen, который возвращает квадраты чисел в диапазоне от a до b sq_gen = (x**2 for x in range(a, b+1)) # преобразуем генератор sq_gen в кортеж с помощью функции tuple() и присваиваем его переменной tp tp = tuple(sq_gen)
На вход программы поступают два целых числа a и b (a < b), записанные в одну строчку через пробел. Определите генератор, который бы выдавал модули целых чисел из диапазона [a; b]. В цикле выведите первые пять значений этого генератора. Каждое значение с новой строки. (Гарантируется, что пять значений имеются).
# Считываем a и b a, b = map(int, input().split()) # Создаем генератор gen = (abs(x) for x in range(a, b+1)) # Выводим первые 5 значений генератора for i in range(5): # Функция next(gen) возвращает следующий элемент генератора. print(next(gen))
Пусть имеется некоторый генератор gen, который возвращает числа. Отметьте команды, которые можно выполнять с этим генератором.
max(gen)
set(gen)
sum(gen)
min(gen)
list(gen)
tuple(gen)
Отметьте преимущества генераторов перед коллекциями.
меньший расход памяти
возможность оперировать очень большими объемами данных
Вводится целое положительное число a. Необходимо определить генератор, который бы возвращал модули чисел в диапазоне [-a; a], а затем еще один, который бы вычислял кубы чисел (возведение в степень 3), возвращаемых первым генератором.
Вывести в одну строчку через пробел первые четыре значения. (Полагается, что генератор выдает, как минимум четыре значения).
a = int(input()) # Генератор для модулей чисел gen1 = (abs(i) for i in range(-a, a+1)) # Генератор для кубов чисел gen2 = (x ** 3 for x in gen1) # Вывод первых четырех значений через пробел for x in range(4): print(next(gen2), end=' ')
Используя символы малых букв латинского алфавита (строка ascii_lowercase):
from string import ascii_lowercase
запишите генератор, который бы возвращал все сочетания из двух букв латинского алфавита. Выведите первые 50 сочетаний на экран в строку через пробел.
Например, первые семь начальных сочетаний имеют вид:
aa ab ac ad ae af ag
from string import ascii_lowercase # импортируем строку малых букв латинского алфавита
# Создаем генератор, который будет возвращать все возможные комбинации из 2 символов малых латинских букв
gen = (x + y for x in ascii_lowercase for y in ascii_lowercase)
# запускаем цикл, который будет повторяться 50 раз
for i in range(50):
# выводим на экран очередное значение генератора и ставим пробел после него, end=' ' - указывает, что необходимо не переносить строку после вывода на экран значения
print(next(gen), end=' ')
Имеется список из названий городов:
cities = ["Москва", "Ульяновск", "Самара", "Уфа", "Омск", "Тула"]
Необходимо записать генератор, который бы используя этот список, выдавал 1 000 000 наименований городов по циклу. То есть, дойдя до конца списка, возвращался в начало и повторял перебор. И так, для выдачи миллиона названий. Вывести на экран первые 20 наименований городов с помощью генератора в одну строчку через пробел.
cities = ["Москва", "Ульяновск", "Самара", "Уфа", "Омск", "Тула"] # Создаем переменную n для хранения количества элементов в списке городов. s = len(cities) # Создаем генератор, который будет выдавать элементы из списка городов, используя оператор остатка от деления, чтобы генератор вернулся к началу списка, когда дошел до конца. Генератор выдаст миллион элементов, чтобы вернуться к началу списка много раз. gen = (cities[i % s] for i in range(1_000_000)) # Выводим первые 20 элементов генератора, используя функцию next для получения следующего элемента из генератора и оператор развертывания для вывода всех элементов через пробел в одну строку. for x in range(20): print(next(gen), end=' ')
Имеется график функции f(x) = 0.5x^2 — 2. Необходимо записать генератор, который бы выдавал значения этой функции для аргумента x в диапазоне [a; b] с шагом 0.01. Величины a, b вводятся с клавиатуры в одну строчку через пробел как целые числа (a< b). Вывести на экран первые 20 значений функции с точностью до сотых, взятых из генератора.
P.S. Значения функции вычислять командой:
f(x) = 0.5 * pow(x, 2) - 2.0
# Считываются значения a и b с помощью input() и map(). a,b = map(int,input().split()) # Определяется функция f(x), которая вычисляет значение функции в точке x. def f(x): return 0.5 * pow(x, 2) - 2.0 # Создается генератор gen, который выдает значения x с шагом 0.01 в диапазоне от 100a до 100b. gen = ((x/100) for x in range(100*a,100*b)) # Создается список lst, который содержит значения функции f(x) для каждого значения x из генератора gen. Значения округляются до сотых. lst = [round(f(x),2) for x in gen] # На экран выводятся первые 20 значений списка lst. print(*lst[0:20])
Если у вас не отображается решение последних задач, значит у вас включен блокировщик рекламы который вырезает эти ответы