任何原因都没有来自set.add的返回值

Che*_*eng 5 python

当前,因为返回值set.add始终是None.我必须做以下事情.

if 1 in s:
    print 'already found'
    return
s.add(1)
Run Code Online (Sandbox Code Playgroud)

如果可以的话会不会很好

if not s.add(1):
    print 'already found'
    return
Run Code Online (Sandbox Code Playgroud)

Vin*_*ard 8

>>> None == False
False
>>> None == True
False
>>> None == None
True
>>> not None
True
Run Code Online (Sandbox Code Playgroud)

如果s.add始终返回None,那么您的条件将始终为True.但由于s是一个集合,只需将值添加到它.根据定义,您不能在集合中具有重复值:

>>> a = set()
>>> a.add(1)
>>> a
{1}
>>> a.add(1)
>>> a
{1}
Run Code Online (Sandbox Code Playgroud)

如果你只是想知道1是否在集合中,那么就做if 1 in s.


S.L*_*ott 5

任何原因 set.add 没有返回值

是的。

原因是集合变元,如set.add()list.append()等,永远不会返回值。

如果方法发生变化并成为对象,则它不会返回值。这就是规则。

有一些小的例外,例如pop

  • 这真是一个可怕的理由。我的意思是,你给出为什么它没有返回值的原因是违反规则的,但规则也有例外。为什么这不能成为另一个例外?如果元素已经存在或不存在,它可能会返回。 (7认同)