【发布时间】:2014-06-15 02:44:33
【问题描述】:
我有一个包含所有可能组合的大清单
items = ["Apple","Banana","Orange","Peach"]
combs = []
for c in combinations(items, 2)):
combs.append([c[0],c[1]])
这给出了:
[['Apple', 'Banana'], ['Apple', 'Orange'], ['Apple', 'Peach'], ['Banana', 'Orange'], ['Banana', 'Peach'], ['Orange', 'Peach']]
并且用户可以从该列表中输入两个项目,
我想在列表中获取所述组合的索引。
如果用户以正确的顺序输入,例如“Apple Banana”,我可以做到这一点,但如果是相反的“Banana Apple”则不行。因为没有 ["Banana", "Apple"]
我知道我可以在输入中使用排列,因此它可以同时给出 ["Banana", "Apple"] 和正确的 ['Apple', 'Banana']。但是如何在不使用嵌套 for 循环的情况下检查一个是否在另一个中?即使是这个小检查也会导致 12 次迭代。
这是嵌套循环:
for pr in permutations([input1, input2], 2):
for comb in combinations(items, 2):
if ..........:
dosomething
【问题讨论】:
-
使用
set存储组合怎么样? -
Martijn 的答案是正确的。
标签: python compare combinations permutation