python中列表,字典等必须要注意的事项

Posted 铁子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中列表,字典等必须要注意的事项相关的知识,希望对你有一定的参考价值。

1.python中的列表不能够遍历删除

 1 #python列表我们不能够遍历删除
 2 li = [1, 2, 3, 4, 5, 6]
 3 for i in range(len(li)):
 4     print(i)
 5     del li[i]
 6     print(li)
 7 # 输出结果:
 8 # Traceback (most recent call last):
 9 # 0
10 # [2, 3, 4, 5, 6]
11 #   File "C:/Users/XZB/PycharmProjects/s1/day7/python注意事项.py", line 5, in <module>
12 # 1
13 #     del li[i]
14 # [2, 4, 5, 6]
15 # IndexError: list assignment index out of range
16 # 2
17 # [2, 4, 6]
18 # 3

原因:首先,列表是可变类型的数据,我们每进行一次修改,都会在原数据类型上面进行修改,然而for遍历有一个机制,在第一次时候,它就已经将需要遍历多少次等相关存储起来了,所以后面的遍历不会再判断需要进行多少次数,所以,在for遍历删除列表中的元素的时候,我们没遍历一次,列表中的元素都会改变,然而,for遍历的机制还是最初的那样子,所以会产生删除有误的问题!

2.python中的字典不能够遍历删除

 1 dic = {k1 : v1, k2 : v2, a3 : v3}
 2 for i in dic:
 3     print(i)
 4     if k in i:
 5         del dic[i]
 6 #输出结果:Traceback (most recent call last):
 7 #          k1
 8 #          File "C:/Users/XZB/PycharmProjects/s1/day7/python注意事项.py", line 20, in <module>
 9 #          for i in dic:
10 #          RuntimeError: dictionary changed size during iteration

如果我们将不含有k的键值对打印出来,有如下两种方法:

 1 #方法一
 2 dic = {k1 : v1, k2 : v2, a3 : v3}
 3 dic1 = {}
 4 for i in dic:
 5     if k not in i:
 6         dic1.setdefault(i, dic[i])
 7 dic = dic1
 8 print(dic)
 9 
10 #方法二
11 l = []
12 dic = {k1 : v1, k2 : v2, a3 : v3}
13 for i in dic:
14     if k in i:
15         l.append(i)
16 
17 for i in l:
18     del dic[i]
19 
20 print(dic)

 

以上是关于python中列表,字典等必须要注意的事项的主要内容,如果未能解决你的问题,请参考以下文章

Python代码阅读(第40篇):通过两个列表生成字典

Python代码阅读(第26篇):将列表映射成字典

python中必须要会的四大高级数据类型(字符,元组,列表,字典)

Python中的requests模块注意事项

python循环修改列表注意事项

AngularJs压缩时须要注意的事项