简化迭代

tom*_*mas 0 python iterator

str = ''

for i in self.obj:
    str += '[' + self.obj[i] + ']';
Run Code Online (Sandbox Code Playgroud)

有没有办法简化代码?

Nik*_* B. 6

假设这self.obj是一个字典:

string = ''.join('[%s]' % x for x in self.obj.itervalues())
Run Code Online (Sandbox Code Playgroud)

如果它是一个自定义对象实现__getitem__:

string = ''.join('[%s]' % self.obj[x] for x in self.obj)
Run Code Online (Sandbox Code Playgroud)

请注意,我不使用str变量名称.你不应该这样做,因为它是Python中的内置函数.

更新:关于你的最后评论,你可以做这样的事情:

string = ''.join('[%s%s]' % (x[1:], self.obj[x]) for x in self.obj)
Run Code Online (Sandbox Code Playgroud)

或者如果您更喜欢(更多Pythonic?)format方法:

string = ''.join('[{0}{1}]'.format(x[1:], self.obj[x]) for x in self.obj)
Run Code Online (Sandbox Code Playgroud)