2024-05-14 11:24:04 发布
网友
在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
但它什么也没印。我遗漏了什么吗?谢谢!
在Python中,set.add()方法不返回任何内容。必须使用not in运算符:
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。您可以忽略这个约定;还有一些方法“在野外”违反了它。然而,这是一个普遍的、公认的惯例:我建议坚持下去,牢记在心。
None
通常,Python会尽量避免使用有副作用的条件。也就是说,条件应该只是一个测试,更改数据的操作应该自己进行。
我同意在某种情况下使用副作用有时是很方便的,但不,在这种情况下,您需要:
z = set() if y not in z: z.add(y) print something
就我个人而言,我喜欢if y not in z:的简单表达能力,即使它占用了更多的一行代码,而且在以后阅读代码时,在精神上解析它就少了一件事。
if y not in z:
如前一个答案中所述,Python集的add方法不返回任何内容。顺便说一下,Python邮件列表中讨论了这个确切的问题:http://mail.python.org/pipermail/python-ideas/2009-February/002877.html。
在Python中,
set.add()
方法不返回任何内容。必须使用not in
运算符:如果在添加对象之前需要知道对象是否在集合中,只需存储布尔值:
不过,我认为你不太可能需要它。
这是一个Python约定:当一个方法更新某个对象时,它返回
None
。您可以忽略这个约定;还有一些方法“在野外”违反了它。然而,这是一个普遍的、公认的惯例:我建议坚持下去,牢记在心。通常,Python会尽量避免使用有副作用的条件。也就是说,条件应该只是一个测试,更改数据的操作应该自己进行。
我同意在某种情况下使用副作用有时是很方便的,但不,在这种情况下,您需要:
就我个人而言,我喜欢
if y not in z:
的简单表达能力,即使它占用了更多的一行代码,而且在以后阅读代码时,在精神上解析它就少了一件事。如前一个答案中所述,Python集的add方法不返回任何内容。顺便说一下,Python邮件列表中讨论了这个确切的问题:http://mail.python.org/pipermail/python-ideas/2009-February/002877.html。
相关问题 更多 >
编程相关推荐