首页 > 编程知识 正文

sqlite删除一条记录(python的remove函数)

时间:2023-05-04 18:43:39 阅读:65756 作者:680

编程教程是私人教程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。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。