Цель понятна — нужен генератор, который создаёт список из 10 случайных чисел в диапазоне 10…50 включительно. Ниже две удобные реализации и пояснения.
- Генераторная функция (порождает значения; затем собираем в список)
def random_list(n=10, lo=10, hi=50):
for _ in range(n):
yield random.randint(lo, hi)
lst = list(random_list()) # получаем список из 10 элементов
print(lst)
- Что делает:
- random.randint(lo, hi) возвращает целое число в диапазоне [lo, hi], включая границы.
- Функция-генератор yield выдаёт по одному числу 10 раз.
- list(...) собирает эти 10 значений в обычный список.
- Генераторное выражение (однострочник) + сбор в список
lst = list(random.randint(10, 50) for _ in range(10))
print(lst)
- Что делает:
- Это генератор-подобное выражение, которое по одному вычисляет 10 случайных чисел и сразу же собирает их в список.
Дополнительные пояснения
- Важное про диапазон: randint(a, b) возвращает число в диапазоне от a до b включительно. Поэтому 10 и 50 включены.
- Если хотите просто увидеть генератор без немедленного сбора в список, можно опробовать:
gen = (random.randint(10, 50) for _ in range(10))
и затем работать по элементам: next(gen), или пройтись по нему
- Для устойчивости можно задать сидер:
random.seed(123) # фиксированный набор чисел для повторяемости
Пример ожидаемого вывода (пример, значение будет различаться при каждом запуске):
[23, 48, 12, 50, 31, 26, 14, 45, 19, 17]
Если нужно, могу адаптировать решение под конкретный язык программирования (например, JavaScript, Java и т. п.) или под требования учителя.