列表 字典的删除问题

Posted yhx003

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了列表 字典的删除问题相关的知识,希望对你有一定的参考价值。

遇见的删除不彻底的问题

lst = [1,2]
for i in lst:
lst.append(3)#每次增加 lst 的长度越长 所以一直执行
print(lst) # 死循环

删除列表的问题

lst = [1,2,3,4]
for i in lst:
lst.pop()
print(lst)
结果为:[1,2] 当i 为1的时候 删除最后一个元素4; i为2的时候删除3 结束

lst = [1,2,3,4]
for i in lst:
lst.pop(0)
print(lst)
结果为:[3,4]
当i 值为第一个元素 也就是1 删除第一个元素1,此时列表为[2,3,4] 此时i 为第二个元素 也就是3 删除第一个元素 也就时2 这是列表为[3,4] 此时列表为两个元素 不能取第三个元素 结束

lst = [1,2,3,4]
for i in lst:
lst.remove(i)
print(lst)
结果为:[2,4]
当i 值为第一个元素 也就是1 删除第i个元素1,此时列表为[2,3,4] 此时i 为第二个元素 也就是3 删除第i个元素 也就时2 这是列表为[2,4] 此时列表为两个元素 不能取第三个元素 结束

成功删除的方式

lst=[1,2,3,4,6]
for i in range(len(lst))
lst.pop()
print(list)
结果为:[] 获取列表长度 来进行删除

lst=[1,2,3,4,6]
for i in range(len(lst)-1,-1,-1)
del lst[i]
print(lst)
结果为:[] i为索引值 倒序删除

lst = [1,2,3,4,6]
for i in range(len(lst)):
del lst[-1]
print(lst)
结果为:[] 获取列表长度 每次删除最后一个 执行i次

lst = [1,2,3,4,5,6]
lst1 = lst.copy()
for i in lst1:
lst.remove(i)
print(lst)
结果为:[] 浅拷贝 lst1 用lst1进行迭代 但 删除lst元素 两个互不影响

删除字典的坑

dic=dict.fromkeys("12345",1)# 字典的迭代的时候改变了原来的大小(不能加不能删)
for i in dic
dic[i]="123"
print(dic)
结果为:‘1‘: ‘123‘, ‘2‘: ‘123‘, ‘3‘: ‘123‘, ‘4‘: ‘123‘, ‘5‘: ‘123‘ 没有改变字典的大小

dic = dict.fromkeys("12345",1)
dic1 = dic.copy()
for i in dic1:
dic.pop(i)
print(dic)

浅拷贝 dic 生成dic1 迭代dic1 但删除dic 结果为:

集合和字典都是迭代的时候不能改变原来的大小

以上是关于列表 字典的删除问题的主要内容,如果未能解决你的问题,请参考以下文章

如何删除字典列表项[重复]

在 Python 中删除列表中的重复字典

如何从字典中的列表中删除元素[重复]

合并字典列表以删除所有重复项

在 Python3 中使用 filter() 从字典值列表中删除一个列表

Python - 从字典/列表中删除项目[重复]