我主要用 C/C++ 开发,但是出现了用 Python-3 编写应用程序的任务,遇到了对解释器的一些误解。
我犯了一个错误,有一段时间没有注意到它,因为 Python 做的一切“几乎”都是正确的。任务是从列表中删除 N/2 个值,其中 N 是它们的总数。
一个简单的例子来描述这种情况:
array = []
for i in range(10):
array.append(i)
# array [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
i = 0
for item in array:
if i < len(array)/2:
array.remove(item)
# array [1, 3, 5, 7, 9]
如您所见,我没有i在第二个循环中增加变量,但不知何故,解释器仍然从数组中删除零和每个偶数元素。
实际上问题是,它是如何工作的?
