Pythonic способ сделать «для них, кроме меня» - PullRequest
0 голосов
/ 06 декабря 2010

По сути, интересно, каков наилучший / самый питон-й способ сделать это;

class thing(collectionclass):
    for onething in super(collectionclass,listofthings):
        if onething != self:
            do something

Это, очевидно, очень надуманный пример, но, надеюсь, суть ясна!

Iнамеревался сложить все это в список понятий, но хотел, чтобы мнение сообщества

Ответы [ 4 ]

2 голосов
/ 06 декабря 2010

Пожалуйста, прочитайте 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 голосов
/ 06 декабря 2010

Лично я бы использовал

for onething in listofthings:
    if onething is self:
        continue
    # ...

чтобы избежать одного уровня вложенности. Вы также можете использовать выражение генератора:

for onething in (x for x in listofthings if x is not self):
    # ...

Также, комментарий С. Лотта.

Изменить: == изменено на is согласно комментарию @ greggo Лучше не путать идентичность объекта и равенство!

1 голос
/ 06 декабря 2010

Я говорю, что ответ зависит от сложности do something.Если это просто, понимание списка или генератор будут довольно аккуратными;если это сложно, то, что у вас есть, хорошо и ясно (хотя бы немного многословно).

0 голосов
/ 06 декабря 2010

Либо continue на self, либо используйте генекс для исключения в первую очередь.

for onething in (x for x in listofthings if x != self):
  ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...