for loop:范围(sth),它正在增加。这是错的吗?

时间:2013-04-02 17:35:07

标签: python loops range

for j in xrange(len(self.segments)):
    *
    ***some code here*** 
    *
    if (****condition*****):
        self.segments.append(segB)

所以,我有一个for循环和xrange(self.segments),其中self.segments正在起义! 你认为有问题吗?

1 个答案:

答案 0 :(得分:4)

您不会迭代与您添加的元素对应的索引,因为在循环启动时评估xrange 。之后它没有得到重新评估。

这是否错误完全取决于你想要做什么。如果你想迭代列表的元素(并且你想要捕获你正在添加的那些元素),那么你可能会逃脱:

for item in self.segments:
    #...
    if whatever:
        self.segments.append(segB)

这是因为列表以可预测的方式迭代。这只有在您添加到列表末尾的情况下才有效 - 如果您在中间某处.insert数据,则不一定有效。