基本上,想知道最好/最蟒蛇的方式是什么;
class thing(collectionclass):
for onething in super(collectionclass,listofthings):
if onething != self:
do something
这显然是一个非常人为的例子,但希望这一点很清楚!
我正在考虑将整个事情折叠成列表理解,但想要社区意见
答案 0 :(得分:3)
我个人使用
for onething in listofthings:
if onething is self:
continue
# ...
避免一级嵌套。您还可以使用生成器表达式:
for onething in (x for x in listofthings if x is not self):
# ...
另外,S.Lott的评论。
修改:根据@ greggo的评论,将==
更改为is
。最好不要让对象身份和平等混淆!
答案 1 :(得分:3)
请阅读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)
答案 2 :(得分:1)
我说答案取决于do something
的复杂程度。如果它很简单,列表理解或生成器将非常整洁;如果它很复杂,你所拥有的就是美好而清晰(如果只是有点冗长。)
答案 3 :(得分:0)
continue
上的self
,或者首先使用genex排除。
for onething in (x for x in listofthings if x != self):
...