如何处理这种逆向关系作业?

时间:2016-08-16 20:20:00

标签: python set add relation inverse

这是我的任务:

  

编写一个函数 inverse(rel),它接受一个关系rel并返回关系rel的反向关系。关系R的逆关系InvsetR定义为InvsetR =   {(x,y)∈S×S |(y,x)∈R)}。例如:

     
    

inRelation({(1,1),(1,2),(2,3),(4,2)})应该返回

         

{(1,1),(2,1),(3,2),(2,4)}

  

这是我的代码:

def inverse(rel):
   m=set()
   for (x,y) in rel: 
      m.add(y,x)
   return m

它说我只能添加一个元素。我该怎么办?

2 个答案:

答案 0 :(得分:0)

对于这个特定的例子,你不需要你的任何自定义函数,只需使用已提供的builtins python,举几个例子:

foo = set([(1, 1), (1, 2), (2, 3), (4, 2)])
inv_foo1 = map(lambda (a, b): (b, a), foo)
inv_foo2 = {(b, a) for (a, b) in foo}
print(foo)
print(inv_foo1)
print(inv_foo2)

答案 1 :(得分:0)

如果“关系”是一组(x,y)夫妻:

>>> relation = {(1,1), (1,2), (2,3), (4,2)}

倒置关系是:

>>> inverted = {(y, x) for x, y in relation}
>>> inverted
{(3, 2), (1, 1), (2, 4), (2, 1)}

inRelation可以是:

def inRelation(relation):
    return {(y, x) for x, y in relation}

注意:我更喜欢蛇案:inv_relation