Заменить вложенный цикл for в понимании списка

Я хочу объединить свой список идентификаторов со своим списком статусов, и для этого я использовал понимание списка:

# id
id_list = [
    1, # UAE1S
    2, # UAE2S
    3, # UAE3S
]

# status
status_list = [
    'okay',
    'not okay',
    'unknown',
]

result = [
    {
        'id':id, 
        'status':status,
    }
    
    for id in id_list
        for status in status_list
]

print(result)

[{'id': 1, 'status': 'okay'}, {'id': 1, 'status': 'not okay'}, {'id': 1, 'status': 'unknown'}, {'id': 2, 'status': 'okay'}, {'id': 2, 'status': 'not okay'}, {'id': 2, 'status': 'unknown'}, {'id': 3, 'status': 'okay'}, {'id': 3, 'status': 'not okay'}, {'id': 3, 'status': 'unknown'}]

Он выводит правильный список, но есть ли способ удалить вложенный цикл for?

Вы действительно намеревались использовать любую комбинацию? Похоже, что может потребоваться попарная комбинация.

MisterMiyagi 23.11.2022 06:39

@MisterMiyagi да

Prosy Arceno 23.11.2022 06:39
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
2
55
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

itertools.product дает декартово произведение,

import itertools
id_list = [1, 2, 3]
status_list = ['okay','not okay','unknown',]
[{'id': item[0], 'status': item[1]} for item in itertools.product(id_list, status_list)]

[{'статус': 'в порядке', 'id': 1}, {'статус': 'не в порядке', 'id': 1}, {'статус': 'неизвестно', 'id': 1}, {'статус': 'в порядке', 'id': 2}, {'статус': 'не в порядке', 'id': 2}, {'статус': 'неизвестно', 'id': 2}, { 'статус': 'хорошо', 'id': 3}, {'статус': 'не в порядке', 'id': 3}, {'статус': 'неизвестно', 'id': 3}]

Другие вопросы по теме