[英]Pythonic way of doing 'for these except myself'
基本上,想知道什么是最好/最python-y的方式?
class thing(collectionclass):
for onething in super(collectionclass,listofthings):
if onething != self:
do something
这显然是一个非常人为的例子,但希望重点很明确!
我当时想将整个内容汇总成列表理解,但希望获得社区意见
我个人会用
for onething in listofthings:
if onething is self:
continue
# ...
避免一层嵌套。 您还可以使用生成器表达式:
for onething in (x for x in listofthings if x is not self):
# ...
另外,S.Lott的评论。
编辑:改变==
到is
按@ greggo的评论。 最好不要让对象标识和平等混淆!
请阅读PEP8 。 我会变得冗长而不是聪明。
class MyThing():
def do_something_to_everyone_but_me(self, list_of_things)
for one_thing in list_of_things:
if one_thing is self:
continue
do_something_with(one_thing)
我说答案取决于do something
的复杂性。 如果简单的话,列表推导或生成器将非常整洁。 如果很复杂,那么您拥有的东西就很清楚了(如果有点冗长)。
continue
对self
,或者首先使用Genex进行排除。
for onething in (x for x in listofthings if x != self):
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.