【发布时间】:2020-06-06 20:55:04
【问题描述】:
我在 Python 中观察到一种我觉得奇怪的行为:
方法一
如果我这样做:
numberset=set([1,2,3])
numberset.remove(1)
现在numberset 是{2, 3},正如预期的那样。
方法二
但是,如果我这样做:
numberset=set([1,2,3]).remove(1)
numberset 现在是NoneType,即甚至不是set。 numberset 不只是 set([1,2,3]) 的名称,那么为什么第二种方法导致的 numberset 与第一种不同?
【问题讨论】:
-
因为
set.remove只返回None。它是一种就地方法,直接更改set,而不是返回一个新的。 -
请澄清您的困惑。在第二种情况下,
numberset是set([1,2,3]).remove(1)的名称,而不是set([1, 2, 3])。另请注意,没有必要将set与列表文字一起使用 - 使用像{1, 2, 3}这样的集合文字。
标签: python python-3.x methods set