Я столкнулся с простой проблемой python, которую нужно решить: имея списки из 3 категорий элементов и их соответствующие значения, распечатайте все комбинации в трех списках, которые имеют более низкое общее значение, чем X. (Пример кода может быть более понятным объяснение).
Мне удалось решить эту проблему с помощью zip () и itertools.product () для создания комбо, но когда дело доходит до вывода правильных комбо, я чувствую, что должно быть лучше, далее pythoni c путь к express выходу путем сжатия внутренних кортежей продуктов для получения суммы цен без необходимости создания 2 явных генераторов / списка (вариант использования в данном случае не имеет значения), я считаю). Исходя из Java фона, у меня все еще иногда возникают проблемы, когда я не впадаю в Java -подобный синтаксис, чего я определенно хочу избежать с помощью Python.
Вот мой код:
import itertools
# Print out all possible meal combinations under $30
main_courses = ['beef stew', 'fried fish']
price_main_courses = [28, 23]
desserts = ['ice-cream', 'cake']
price_desserts = [2, 4]
drinks = ['cola', 'wine']
price_drinks = [3, 10]
products = itertools.product(
zip(main_courses, price_main_courses),
zip(desserts, price_desserts),
zip(drinks, price_drinks)
)
for combo in products:
names = (x[0] for x in combo)
price = sum((x[1] for x in combo))
if price <= 30:
print(*names, price)