Python有序对

时间:2017-11-16 05:08:42

标签: python python-3.x

我是python的新手,我正在尝试生成有序对,然后评估设置关系的域和范围。我当前代码的问题在于它设置列表就好了,但它不是给我实际的有序对,它给了我(我假设的是)有序对的地址。

    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 个答案:

答案 0 :(得分:2)

以下代码返回一个生成器。

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

我认为你可能期望它创建一个元组,在这种情况下你必须做这样的事情;

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

或者您可以使用列表

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

答案 1 :(得分:0)

更简单,更安全的方法是使用ast.literal_eval来评估您的表达式:

例如:

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

In [71]: ast.literal_eval(inputOrderPair)
Out[71]: (2, 4)