私は次の変数のリストとマスター変数を持っています
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の要素の「1つ」のみがmastervariableにあります(つまり、2はmastervariableに2回ではなく1回だけ表示されます)。
私は現在非常に非効率的です:
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.
次に、非常に非効率的な方法で1つずつチェックすることにより、上記のように繰り返します。FORステートメントを使用すると、最初の要素を2回チェックすることになり、これは正しくありませんでした。
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つの要素を一度にチェックできる2 FORステートメントを使用する方法はありますか?または、私が試していることを効率的に行う方法を提案できますか?
編集:マスター変数には重複が含まれる可能性があります。