Hay veces que Python hace cosas que no te esperas.
Por ejemplo, si quieres recorrer e ir borrando los elementos de una lista según éstos se van recorriendo, pensarías que lo normal es hacerlo del siguiente modo. Pero fíjate lo que pasa:
>>> list = range(10) >>> for x in list: ... list.remove(x) >>> list [1, 3, 5, 7, 9] |
La implementación que hace del recorrido tiene alguna historieta con los índices. Si queremos ir recorriendo y eliminando una lista en Python, la forma “correcta” de hacerlo es:
>>> list = range(10) >>> for x in list[:]: ... list.remove(x) >>> list [] |