编程教程是私人教程https://www.piaodoo.com/
友谊链接:
高州阳光论坛https://www.hnthzk.com/人人看电影http://www.sfkyty.com/
在list.remove方法中,删除元素时经常发生删除遗漏和索引越界。 以下是示例。
漏删:
lst=[ 9,25,12,36 ] foriinlst : ifi 10: lst.remove (I ) print (lst ) )为什么删除了12呢? 其实原理很简单,如图所示:
列表的下标从0开始,遍历到25后,删除25,返回新列表。
请注意,与原始25相对应的下标为1,因此从下标为2的地方开始巡视。 但是,在新列表中,下标为2的地方为36,所以12将被跳过。
解决方法:
如果从列表中删除了元素,则只需确定必须再次从0开始遍历列表。
lst=[ 9,25,12,36 ]如果删除了while true : foriinlst 3360 ifi 10: lst.remove (I ) #元素,请结束此遍历并在新列表中删除else 3360
使用下标遍历列表时,索引可能会越界,如下所示:
lst=[ 9,25,12,36 ] foriinrange (len (lst ) ) :# print(i ) if lst(I ) 10:lst.remove ) lst (I ) PPT
原理相同,这里I的取值是0 1 2 3。 删除一个元素将减少新列表的长度,索引变为0 1 2,但I根据原始列表中的索引取值,因此当I取3时,新列表中没有该元素,索引越界。
索引越界:
以lst=[ 25,9,12,36 ] j=0foriinrange (len (lst ) ) :if lst[j]10:#以下、j取0的情况为例。 # j=0时,删除对应的元素25,# continue的做法j=1print(lst )解决方法一:
只要按反序遍历索引列表,就不会发生越界问题。
这样,即使新的列表的长度变短,I的可取值也相反,即使列表中缺少一个元素,也不会影响I的可取值。
例如,可以删除其中I为3的元素,并且新列表的最高索引为2,但是此时I的下一个可能的值正好为2,没有影响。
lst=[ 9,25,12,36 ] foriinrange (len (lst )-1,-1,-1) : # I :3210 if lst [ I ] 10: lst.remove (lst 有关相关的Python remove删除索引过境内容,请搜索私人教程www.piaodoo.com或更早的文章,或继续查看以下相关文章。 我想今后继续支持私人教程www.piaodoo.com。