2017-11-16 4 views
0

私はPythonの初心者です。順序付けされたペアを生成しようとしていて、設定された関係のドメインと範囲を評価しようとしています。私の現在のコードの問題は、リストをうまく設定することですが、実際の順序付けされたペアを与えるのではなく、順序付けされたペアのアドレス(私が仮定しているもの)を与えます。Python Ordered Pairs

relation = [[] for i in range(numOrderPairs)] 
    for x in range(numOrderPairs): 
     inputOrderPair = input("\nPlease enter an ordered pair, i.e (x, y).") 
     orderPair = (int(t.strip("(),")) for t in inputOrderPair.split()) 
     relation[x] = orderPair 
    print(relation) 

    >>>[<generator object <genexpr> at 0x7f4242a0ab48>, <generator object 
     <genexpr> at 0x7f4242a0aba0>, <generator object <genexpr> at 
     0x7f4242a0abf8>] 

答えて

2

次のコードはジェネレータを返します。

(int(t.strip("(),")) for t in inputOrderPair.split()) 

タプルを作成することを期待していると思いますが、その場合はこのようなことをする必要があります。

tuple(int(t.strip("(),")) for t in inputOrderPair.split()) 

それとも、ただ簡単かつ安全な方法はast.literal_evalで、あなたの式をevalにある代わりに

[int(t.strip("(),")) for t in inputOrderPair.split()] 
+0

ああ、ワオ。それは簡単ですね?本当にありがとう!それは本当に私を困惑させていた。 –

+0

ええ:)生成は驚くべきですが、それらもワンショットなので、おそらくここでは欲しいものではありません。 – Shadow

0

をリストを使用することができます。

Exemple:

In [70]: inputOrderPair='(2,4)' 

In [71]: ast.literal_eval(inputOrderPair) 
Out[71]: (2, 4) 
関連する問題