“add to set”在java中返回一个布尔值-python呢?

2024-05-14 11:24:04 发布

您现在位置:Python中文网/ 问答频道 /正文

在Java中,我喜欢使用“add to the set”操作返回的布尔值来测试元素是否已经存在于集合中:

if (set.add("x")) {
   print "x was not yet in the set";
}

我的问题是,在Python中有没有一样方便的东西?我试过了

 z = set()
 if (z.add(y)):
     print something

但它什么也没印。我遗漏了什么吗?谢谢!


Tags: thetoinadd元素ifnotjava
3条回答

在Python中,set.add()方法不返回任何内容。必须使用not in运算符:

z = set()
if y not in z: # If the object is not in the list yet...
    print something
z.add(y)

如果在添加对象之前需要知道对象是否在集合中,只需存储布尔值:

z = set()
was_here = y not in z
z.add(y)
if was_here: # If the object was not in the list yet...
    print something

不过,我认为你不太可能需要它。

这是一个Python约定:当一个方法更新某个对象时,它返回None。您可以忽略这个约定;还有一些方法“在野外”违反了它。然而,这是一个普遍的、公认的惯例:我建议坚持下去,牢记在心。

通常,Python会尽量避免使用有副作用的条件。也就是说,条件应该只是一个测试,更改数据的操作应该自己进行。

我同意在某种情况下使用副作用有时是很方便的,但不,在这种情况下,您需要:

z = set()
if y not in z:
    z.add(y)
    print something

就我个人而言,我喜欢if y not in z:的简单表达能力,即使它占用了更多的一行代码,而且在以后阅读代码时,在精神上解析它就少了一件事。

如前一个答案中所述,Python集的add方法不返回任何内容。顺便说一下,Python邮件列表中讨论了这个确切的问题:http://mail.python.org/pipermail/python-ideas/2009-February/002877.html

相关问题 更多 >

    热门问题