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

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

30.06.2020, 19:49. Показов 1606. Ответов 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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.06.2020, 19:49
Ответы с готовыми решениями:

Задача про Генератор
Даны два натуральных числа N и K. Требуется вывести все цепочки x1, x2, ..., xN такие, что xi - натуральное и 1 ≤ xi ≤ K. Входные...

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

задача про самолет (аналог задачи про рюкзак)
Мне хотелось бы, чтобы вы посоветовали и помогли мне, как правильно решить задачу. В самолет требуется погрузить n видов предметов,...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.06.2020, 19:49
Помогаю со студенческими работами здесь

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

Задача про адреса и про данные в памяти
Добрый день, странный возможно вопрос, но мне он не дает покоя, как можно указать конкретное место в памяти, чтобы ссылка указывала точно...

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

Задача про Randomize и про проценты
Доброго времени суток. Возникла ещё одна задача, я думал что не сложная, как оказалось не знаю, как правильно решить. ...

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


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru