Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 25.02.2020
Сообщений: 15
1

Задача про генератор

30.06.2020, 19:49. Просмотров 232. Ответов 0

Функция создает генератор потока для данного итерируемого объекта (список, генератор и т. д.), элементы которого содержат позицию и значение и отсортированы по порядку появления. Генератор потока должен быть равен исходному потоку (без позиции), но пробелы заполнены нулями. Например:
Python
1
2
gen = gen_stream (9, [(4,111), (7,12)])
 list (gen) [0, 0, 0, 0, 111, 0, 0, 12, 0]
# первый элемент имеет нулевой индекс, поэтому 111 находится на пятой позиции, 12 - на 8-й позиции
То есть 2 значащих элемента имеют индексы 4 и 7, все остальные элементы заполнены нулями.
Для упрощения сортировки элементов (т. Е. Элемент с более низкой позицией должен предшествовать элементу с более высоким номером) в исходном потоке.

Первый параметр может быть None, в этом случае поток должен быть бесконечным, например, поток с бесконечными нулями:
Python
1
gen_stream (none, [])
следующий поток начинается с 0, 0, 0, 0, 111, 0, 0, 12, ... затем бесконечно генерирует нули:
Python
1
 gen_stream (none [(4,111), (7,12)])
Вот код:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
from itertools import count
def gen_stream(total, sorted_iterable, extractor=lambda x: x):
    sorted_iterator = iter(sorted_iterable)
    iterable = count() if total is None else range(total)
    try:
        current_extracted_record = extractor(next(sorted_iterator))
    except StopIteration:
        current_extracted_record = None
    for i in iterable:
        if current_extracted_record:
            if i == current_extracted_record[0]:
                try:
                    yield current_extracted_record[1]
                    current_extracted_record = extractor(next(sorted_iterator))
                except StopIteration:
                    current_extracted_record = None
            else:
                yield 0
        else:
            yield 0
 
 
if __name__ == "__main__":
    gen = gen_stream(9, [(4, 111), (7, 12)])
 
    print(list(gen))
Вот вывод:
Python
1
[0, 0, 0, 0, 111, 0, 0, 12, 0]
Как решить данную задачу, не изменяя входные параметры и без использования "try"?

Добавлено через 31 минуту
Также есть такой вариант без try :
Python
1
2
3
4
5
6
7
from itertools import count
 
def gen_stream(total, sorted_iterable, extractor=lambda x: x):
    sorted_iterable = dict(map(extractor, sorted_iterable))
    iterable = count() if total is None else range(total)
    for i in iterable:
        yield sorted_iterable.get(i, 0)
Но тут другая пробелма....
sorted_iterable = dict(map(extractor, sorted_iterable)) тут словарь, и просто так dict же не удалишь, а надо iterable
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.06.2020, 19:49
Ответы с готовыми решениями:

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

Задача про взлом кода из книги Эрика Фримена про основы javascript в конце 5 главы.
читаю книгу Эрика Фримена про основы javascript.В конце 5 главы есть задачка про взлом кода.Никак...

Книга про генератор случайных чисел
Подскажите книгу про генератор случайных чисел кто знает? Заранее большое спасибо=)

Статьи про опорный генератор DDS на основе ФАПЧ
Здравствуйте, кто-нибудь может знает какие-нибудь статьи на тему: опорный генератор на основе ФАПЧ,...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.06.2020, 19:49

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Задача на перебор вариантов. Задача Л.Эйлера. Про чиновника
Задача Л.Эйлера. Некий чиновник купил лошадей и быков на сумму 1770 талеров. За каждую лошадь он...

Кормен. Задача. Генератор случайных чисел
Есть задача из Кормена, но я не знаю как к ней подступиться, расчитываю на помощь. Есть...

Очередь целых чисел, генератор случайного числа, и задача
Помогите, пожалуйста, с задачей! Для тех, кто в этом хорошо разбирается, я уверен, что эта задача...

Задача про IP
Простите что не совсем в тему , но у меня ответ 97.15.81.53/15 , но говорят это неправильно ...

Задача про экзамен
Студенты приходят на экзамен и по очереди входят в аудиторию. Количество билетов может быть меньше...

Задача про рюкзак
Всем привет! Есть программа, которая решает задачу про рюкзак. Когда у меня количество...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.