1

我有这两个源代码,我不明白其中的区别

x = {"apple", "banana", "cherry"}
y = {"google", "microsoft", "apple"}

z = x.symmetric_difference(y)

print(z) ## z now is {'google', 'cherry', 'microsoft', 'banana'}

x = {"apple", "banana", "cherry"}
y = {"google", "microsoft", "apple"}

z = (x - y).update((y - x))

print(z) ## z now is NoneType

为什么第二个代码不会导致第一个代码?据我所知,(xy) 将返回一个集合,然后我使用 (y - x) 应用更新方法来合并 (xy) 集合和 (yx),所以结果应该相同?

4

2 回答 2

0

正如@MisterMiyagi 所说,更新功能到位操作。您可以将 (x - y) 保存在某个变量中,并且可以执行更新操作。像这样的东西。

var = (x - y)
var.update((y - x))
于 2021-06-15T07:04:41.197 回答
0

稍作改动,它就可以工作:

x = {"apple", "banana", "cherry"}
y = {"google", "microsoft", "apple"}

z = x - y
z.update((y - x))

print(z)

{“谷歌”、“樱桃”、“微软”、“香蕉”}

更新操作是就地的,因此您使用的表达式x-y最终是就地更新的临时设置值。因此, assignment 最终是None.

于 2021-06-15T06:55:08.600 回答