Java 的 Set.add
函数将返回一个 boolean 值,如果集合尚未包含指定元素,则返回 true
。
Python 的 Set.add
没有返回值。
好像在Python中如果我想做同样的事情,我必须先检查它是否在集合中,如果不在则添加它。
是否有更简单的方法来做到这一点(最好是单行)?
引用:
https://docs.oracle.com/javase/7/docs/api/java/util/Set.html#add(E)
https://docs.python.org/2/library/sets.html#sets.Set
最佳答案
如果您想要单行,则仅当元素尚未位于
集合中时,才可以使用或
来添加
元素(短路求值),以及 not
来反转返回值,同时强制转换为 bool
,将 返回的
(如果被调用)为 None
转换为 None
>addTrue
,否则仅反转 in
检查的结果:
>>> s = set()
>>> not(42 in s or s.add(42))
True
>>> not(42 in s or s.add(42))
False
>>> s
set([42])
但是,由于这一行可能不太容易掌握,并且您必须将要插入的值写入两次,因此您可能应该将其设为一个函数,然后它使用多少行并不重要.
def in_or_add(s, x):
return not(x in s or s.add(x))
关于java - Python 相当于 Java 的 Set.add()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38563245/