我是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>]
答案 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)