java - Python 相当于 Java 的 Set.add()?

标签 java python set

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 >add(如果被调用)为 True,否则仅反转 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/

相关文章:

python - 在 python 中使用 !var 有什么陷阱吗?

php - 相当于 PHP 中的 std::set?

python - 使用Python集合类型实现ACL

python - 我为快乐号码检查器编写的代码无法正常工作,有人可以检查一下吗?

java - 用图案填充形状(可能未闭合)

java - Firebase 如何通过按键检索数据

java - 使用 Cobertura 时如何忽略 Logger 相关的 If 条件?

java - 在 Java SWT 中绘制动态基元

python - 使 pandas plot() 显示 xlabel 和 xvalues

python - PySpark to_json 丢失了数组中结构的列名