Я работаю над инструментом для создания входов для моделирования массива, где различные входы итерации в нескольких сериях для создания всех комбинаций входов. Некоторые значения должны итерации, связанные вместе, для игрушечного примера: «День»: [«Солнце», «Мон», «Вт», «Ср», «Ту», «Пт», «Сб»] и «Класс» : [Неверно, ложь, верно, ложное, верно, ложное, ложное] будет использоваться парами, но «неделя»: [1,2,3,4,5] будет имер в другом измерении. Я пытаюсь вписать все списки и настройки ввода в простой текстовый формат, чтобы затем быть зарегистрированным с помощью Python и выводя все соответствующие комбинации.
Если Zip () аналогична внутреннему продукту в линейной алгебре, функция i 'M пытаюсь сделать - это внешний продукт.
То, что я пробовал, - это словарь ключа: [итерабильные] пары и список «измерений» для итерации через
inputs:
format_array = {
'year':['f2024','s2025'],
'week':[1,2,3,4,5],
'day':['Sun','Mon','Tue','Wed','Thu','Fri','Sat'],
'class':[False,False,True,False,True,False,False],
'course':['SciComp'],
'students':[['tmuzzy','jsmith'],['Alice','Bob','Charlie']]
}
format_dimensions = [1,2,3,3,0,1]
< /code>
, где все ключи, которые имеют одинаковое измерение, одновременно итерации (т.е. год и список студентов, а также класс и день) и имеют одинаковую длину, но каждое измерение - это итерация по каждой комбинации. Для этого я использовал функцию itertools.product < /code> по объекту диапазона длины каждого измерения, чтобы получить все комбинации индекса:
for dim in it.product(*[range(d) for d in dim_sizes])< /code>
Затем индексы получают значения для каждого ключа: [iterable] [index] Комбо к словаря, а затем сохраните их в списке: < /p>
out_list = [
{'course': 'SciComp', 'year': 'f2024', 'week': 1, 'day': 'Sun', 'class': False, 'students': ['tmuzzy','jsmith']}
{'course': 'SciComp', 'year': 'f2024', 'week': 1, 'day': 'Mon', 'class': False, 'students': ['tmuzzy','jsmith']}
...
{'course': 'SciComp', 'year': 's2025', 'week': 5, 'day': 'Fri', 'class': False, 'students': ['Alice','Bob','Charlie']}
{'course': 'SciComp', 'year': 's2025', 'week': 5, 'day': 'Sat', 'class': False, 'students': ['Alice','Bob','Charlie']}
]
< /code>
, который затем можно легко вызвать в другой функции, чтобы создать моделирование моего массива: < /p>
for day in out_list:
print("In {course} during {year}, in week {week} on {day} is there class: {class} ".format(**day))
< /code>
Это работает, но не позволяет многочисленные размеры итерабильных, где направление «студентов» имеет разные длины для каждого «года», поэтому оно не может быть имитировано независимо и раздано В качестве списка
это достаточно сложная проблема, но отличное решение действительно улучшит мои рабочие процессы. Я хотел бы, чтобы предложения имели лучший способ настроить входные данные для обработки «неровных размеров», но я могу выяснить, что реализация самостоятельно. Я могу предоставить полную текущую реализацию при необходимости.
Подробнее здесь: https://stackoverflow.com/questions/794 ... s-a-string
Умный способ написать вложенную для петли или n -размерного массива в качестве строки ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Python `asyncio` петли событий: как интегрировать другие иностранные петли?
Anonymous » » в форуме Python - 0 Ответы
- 5 Просмотры
-
Последнее сообщение Anonymous
-