我有以下变量列表和一个主变量
a = (1,5,7)
b = (1,3,5)
c = (2,2,2)
d = (5,2,8)
e = (5,5,8)
mastervariable = (3,2,5)
我正在尝试检查主变量中是否存在每个变量中的 2 个元素,以便上面将 B (3,5) 和 D (5,2) 显示为在主变量中至少有 2 个元素匹配的元素。另请注意,使用集合会导致 C 显示为 matchign 但我不想计算 C 因为 C 中只有“一个”元素在 mastervariable 中(即 2 只在 mastervariable 中出现一次而不是两次)
我目前的效率非常低:
if current_variable[0]==mastervariable[0]:
if current_variable[1] = mastervariable[1]:
True
elif current_variable[2] = mastervariable[1]:
True
#### I don't use OR here because I need to know which variables match.
elif current_variable[1] == mastervariable[0]: ##<-- I'm now checking 2nd element
etc. etc.
然后我通过一次检查每一个来继续像上面那样进行迭代,这是非常低效的。我这样做是因为使用 FOR 语句导致我检查了第一个元素两次,这是不正确的:
For i in a:
for j in a:
### this checked if 1 was in the master variable and not 1,5 or 1,7
有没有办法使用 2 FOR 语句,允许我一次检查列表中的 2 个元素,同时跳过任何已经使用过的元素?或者,你能建议一种有效的方法来做我正在尝试的事情吗?
编辑: Mastervariable 中可以有重复项。