我正在遍历列表。可以在迭代过程中将元素添加到此列表中。因此,问题在于循环仅迭代此列表的原始长度。
我的代码:
i = 1
for p in srcPts[1:]: # skip the first item.
pt1 = srcPts[i - 1]["Point"]
pt2 = p["Point"]
d = MathUtils.distance(pt1, pt2)
if (D + d) >= I:
qx = pt1.X + ((I - D) / d) * (pt2.X - pt1.X)
qy = pt1.Y + ((I - D) / d) * (pt2.Y - pt1.Y)
q = Point(float(qx), float(qy))
# Append new point q.
dstPts.append(q)
# Insert 'q' at position i in points s.t. 'q' will be the next i.
srcPts.insert(i, {"Point": q})
D = 0.0
else:
D += d
i += 1
我尝试使用
for i in range(1, len(srcPts)):
,但是即使在将更多项目添加到列表后,范围仍然保持不变。 最佳答案
问题在于,当您将len(srcPts)
作为参数传递给range
生成器时,它仅被计算一次。因此,您需要具有一个终止条件,该条件必须在每次迭代期间重复评估srcPts
的当前长度。有很多方法可以做到这一点,例如:
while i < len(srcPts):
....