在使用symmetric_different_update编写代码时,我遇到了一个问题
morning = ['Java', 'C', 'Ruby', 'Lisp', 'C#']
afternoon = ['Python', 'C#', 'Java', 'C', 'Ruby']
set(afternoon).symmetric_difference_update(morning)
print(set(afternoon))我的输出:
{'Java', 'Python', 'C', 'C#', 'Ruby'}在morning和afternoon是集合的情况下,它的工作正常
发布于 2021-08-16 12:10:14
如果设置了morning和afternoon,它也不起作用:
>>> morning = {'Java', 'C', 'Ruby', 'Lisp', 'C#'}
>>> afternoon = {'Python', 'C#', 'Java', 'C', 'Ruby'}
>>> set(afternoon).symmetric_difference_update(morning)
>>> print(set(afternoon))
{'Java', 'Python', 'Ruby', 'C#', 'C'}问题来自于您在set/list的副本上调用该方法的事实。要解决此问题,您不能使用_update变量并重新分配相同的名称:
>>> morning = ['Java', 'C', 'Ruby', 'Lisp', 'C#']
>>> afternoon = ['Python', 'C#', 'Java', 'C', 'Ruby']
>>> afternoon = list(set(afternoon).symmetric_difference(morning))
>>> print(afternoon)
['Lisp', 'Python']https://stackoverflow.com/questions/68800522
复制相似问题