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)

原文地址:https://www.cnblogs.com/rcat/p/9288125.html

时间: 2024-10-10 18:20:25

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

Python中的字典详解

Python中的字典是python的一种数据结构,它的本质是key和value以及其对应关系的一种集合,一个key可以对应一个多个value.合理的使用字典能给我们编程带来很大的方便. -----python中的数据类型 -----python中的字符串操作 python3.0以上,print函数应为print(),不存在dict.iteritems()这个函数. 在python中写中文注释会报错,这时只要在头部加上# coding=gbk即可 #字典的添加.删除.修改操作dict = {"a&

python中列表的应用

本文主要介绍了:python中列表的主要应用和一些列表自带的一些函数 代码: #!/usr/bin/env python# author by lh# -*- coding:utf-8 -*- name_list=['al','ed','fg']print name_list #打印列表 print name_list[0] #索引 print name_list[0:2] #切片 for i in name_list: #for循环打印 print i name_list.append('ed

Python中列表的一些方法

Python中列表的常用内置方法 1.向列表的后面追加  list.append() 2. 清空列表 list.clear() 3. 列表复制 list.copy( )  深复制 list.deepcopy() 4. 扩展原列表 list.extend() 5. 获取当前值索引的位置 list.index()  左边的优先找到 6.在列表的指定位置插入指定的元素 list.insert(index,value) 7.删除列表的某个下标值 list.pop()  --通过下标删除 8.删除列表中的

python中列表(list)函数及使用

序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推. Python有6个序列的内置类型,但最常见的是列表和元组. 序列都可以进行的操作包括索引,切片,加,乘,检查成员. 此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法. 列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现. 列表的数据项不需要具有相同的类型 创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可

python中列表 元组 字典 集合的区别

列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. (1)列表 什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单.比如,统计过去一周我们买过的东西,把这些东西列出来,就是清单.由于我们买一种东西可能不止一次,所以清单中是允许有重复项的.如果我们扩大清单的范围,统计我们过去一周所有的花费情况,那么这也是一个清单,但这个清单里会有类别不同的项,比如我们买东西是一种花费,交水电费也是一种花费,这些项的类型是可以使不同的.pyt

python中列表、元组、字典简单介绍

简单说明一下,我之前接触过C++语言,Java语言,然后为了写自动化测试脚本又接触了python语言.虽然我不是编程大牛(开发人员).但是从我接触的这几个语言来说,如果你想学编程,以前又没有学习过,那么我真的挺建议大家去学习python的.我也理解了为什么会有一句话"人生苦短,我要用python" 首先说下这几个的定义: 1.列表(list):专门用于存储一串信息,列表用中括号[]定义,数据之间使用逗号,分隔 如图: 2.元组(Tuple):与列表类似,不同之处在于元组的元素不能修改,

Python中的字典

字段是Python是字典中唯一的键-值类型,是Python中非常重要的数据结构,因其用哈希的方式存储数据,其复杂度为O(1),速度非常快.下面列出字典的常用的用途. [字典中常见方法列表] #方法 #描述 ------------------------------------------------------------------------------------------------- D.clear() #移除D中的所有项 D.copy() #返回D的副本 D.fromkeys(s

Python中的字典及举例

字典 字典是python中的唯一的映射类型(哈希表) 字典对象是可变的,但是字典的键必须使用不可变对象,一个字典中可以使用不同类型的键值. 字典的方法 keys() values() items() 举例如下: In [10]: dic = {} In [11]: type(dic) Out[11]: dict In [12]: dic = {'a':1,1:123} In [13]: dic Out[13]: {1: 123, 'a': 1} In [14]: dic = {'a':1,1:1

python中的字典(dict)

首先说一下字典是什么: 字典是一种容器模型,可以通过搜索Key键获得其对应值得数据结构,字典可以储存任何类型的对象.字典里面的每个Key和value之间用冒号隔开.其键可以是字符串.数字.元组,字典是Python中唯一内置的映射类型. 注:键最好不要用浮点 字典所包含的方法如下表: 序号 方法 描述 1 clear(self) 删除字典里面的所有元素 2 copy(self) 返回值类型为字典,浅copy ,俗称赋值 3 fromkey(*args,**kwargs) 创建一个新字典,以序列se