繁体   English   中英

用Python的方式来“为自己以外的人”

[英]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的复杂性。 如果简单的话,列表推导或生成器将非常整洁。 如果很复杂,那么您拥有的东西就很清楚了(如果有点冗长)。

continueself ,或者首先使用Genex进行排除。

for onething in (x for x in listofthings if x != self):
  ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM