这是我的任务:
编写一个函数 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
它说我只能添加一个元素。我该怎么办?
答案 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