我有两组相同的列表和另一个列表,我试图找到所有唯一的组合。我很难想出如何在不重复同一行中的项目(例如:培根,培根)的情况下获得这些组合
我的名单:
crust = ['Thin Crust', 'Hand Tossed']
topping1 = ['Bacon', 'Pepperoni', 'Steak']
topping2 = ['Bacon', 'Pepperoni', 'Steak']
sauce1 = ['Tomato', 'BBQ', 'Ranch']
sauce2 = ['Tomato', 'BBQ', 'Ranch']
我正在尝试获取一个输出,该输出按以下顺序列出所有唯一的组合: 外壳|顶部1 |顶部2 |酱1 |酱2 例:
Thin Crust, Bacon, Pepperoni, Tomato, BBQ
Thin Crust, Bacon, Pepperoni, Tomato, Ranch
Thin Crust, Bacon, Pepperoni, BBQ, Ranch
....
尝试:
import itertools
crust = ['Thin Crust', 'Hand Tossed']
topping1 = ['Bacon', 'Pepperoni', 'Steak']
topping2 = ['Bacon', 'Pepperoni', 'Steak']
sauce1 = ['Tomato', 'BBQ', 'Ranch']
sauce2 = ['Tomato', 'BBQ', 'Ranch']
test = list(itertools.product(crust,topping1,topping2,sauce1,sauce2))
print(test)
我的第一个想法是使用itertools来攻击它,但我不知道如何防止像上面提到的那样在同一行中重复。你有什么想法吗
可以使用递归生成器函数:
输出:
您还可以使用
itertools.product
预先生成所有组合,然后使用重复值筛选结果:如果我理解正确的话,你真正想要的是每两种配料和酱汁的组合,然后是他们的产品。如果是这样,您不需要相同的列表
输出:
已经有使用
itertools
模块的解决方案,因此这里有一个从头构建的解决方案:相关问题 更多 >
编程相关推荐