В списке Python запись, которую я ожидал удалить, осталась, а другая запись была удалена. Почему это?Почему скрипт Python перескакивает через некоторые записи, а не другие?
Вот проблемный код:
def getAdjacent(pos, bounds):
posibles = [
[pos[0]-1, pos[1]],
[pos[0]+1, pos[1]],
[pos[0], pos[1]-1],
[pos[0], pos[1]+1]]
for p in posibles:
if isOutside(p,bounds):
posibles.remove(p)
return posibles
def isOutside(pos, bounds):
if pos[0] > bounds[0]-1 or pos[0] < 0 or pos[1] < 0 or pos[1] > bounds[1]-1:
return True
else:
return False
Вот некоторые входы и выходы, которые отражают эту проблему:
In [13]: bounds = [10, 10]
In [14]: p = [9,0]
In [15]: getAdjacent(p, bounds)
Out[15]: [[8, 0], [9, -1], [9, 1]]
In [16]: isOutside([9, -1], bounds)
Out[16]: True
In [17]: isOutside([9, 1], bounds)
Out[17]: False
Теперь, почему [9, -1] еще в getAdjacent(), когда getAdjacent () удаляет все элементы, вызывающие isOutside() для извлечения True? И почему еще нет [10, 0]? Это вещь великая?
ах, я вижу :). спасибо allot (и спасибо за орфографическую коррекцию тоже :)) – user1003620