Упрощение итерации - PullRequest
       1

Упрощение итерации

0 голосов
/ 05 февраля 2012
str = ''

for i in self.obj:
    str += '[' + self.obj[i] + ']';

Есть ли способ упростить код?

1 Ответ

6 голосов
/ 05 февраля 2012

Предполагая, что self.obj является диктом:

string = ''.join('[%s]' % x for x in self.obj.itervalues())

Если это пользовательский объект, реализующий вместо __getitem__:

string = ''.join('[%s]' % self.obj[x] for x in self.obj)

Обратите внимание, что я не использую str в качестве имени переменной. Вы не должны делать это также , потому что это встроенная функция в Python.

ОБНОВЛЕНИЕ: Что касается вашего последнего комментария, вы можете сделать что-то вроде этого:

string = ''.join('[%s%s]' % (x[1:], self.obj[x]) for x in self.obj)

Или, если вы предпочитаете (более Pythonic?) format метод:

string = ''.join('[{0}{1}]'.format(x[1:], self.obj[x]) for x in self.obj)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...