2017-09-14 10 views
0

で、ここでは、私が何をしたいです:比較タプルの要素単位のpython

pair1 = (1,2) 
pair2 = (3,3) 
pair3 = (3,2) 

# Is there a way that I can compare any of these two objects and yields the following: 
def myComp(...): 
#... 

myComp(pair1,pair2) gives False 
myComp(pair1,pair3) gives True  #They both have 2 at index 1 
myComp(pair1,pair3) gives True  #They both have 3 at index 0 

任意のアイデアやアドバイスも大歓迎されます。前もって感謝します!

+0

あなたの宿題はなぜ必要ですか? – Julien

+0

[The Tutorial](https://docs.python.org/3/tutorial/index.html)で作業に時間をかけてください。与えられた例を練習し、よく慣れていないことを文書で見てください。これは、あなたの使い捨てのツールのアイデアを提供する必要がありますあなたの問題を解決するためのアイデアを得ることを開始する可能性があります - それらのアイデアを試してください。まだチャンスがない場合は、[ask]と[mcve]をお読みください。 – wwii

答えて

0

はるかに簡単にif文の条件をハードコーディングするよりも、これを行うための組み込みコマンドがあります。あなたはzipanyを使用することができます。

def myComp(pair1, pair2): 
    return any(x == y for x, y in zip(pair1, pair2)) 

>>> myComp(pair1, pair2) 
False 
>>> myComp(pair2, pair3) 
True 
>>> myComp(pair1, pair3) 
True 

何が起こるかというと、二つのリストは、タプルのジェネレータを作成するzipを使用して一緒にzip形式で圧縮されています。これは、発電機の理解の中で解凍されます。 anyは、x == yのいずれかがTrueであるかどうかを調べるためにテストされます。はいの場合、結果はTrueとなり、返されます。それ以外の場合はFalseが返されます。

このアプローチは、任意のサイズのリストが等しい場合、それらのリストを使用して動作するはずです。

-1

あなたMYCOMP機能は、ちょうどそれのようになるので、比較を行うために必要があれば:

def myComp(pair1,pair2) 
    if (pair1[0]==pair2[0] || pair1[1]==pair2[1]) 
     return true; 
return false; 
+0

あなたは 'return(pair1 [0] == pair2 [0] || pair1 [1] == pair2 [1])'を直接実行することもできます。 – Julien

+0

pythonにはこれを行う関数が組み込まれていますか? –

+0

私は、組み込みの関数がそれを行うかどうかはわかりませんが、これはかなり単純ですので、組み込みの関数は必要ありません。 –

関連する問題