Python中的陷阱
来源:互联网 发布:python 矩阵转图片 编辑:程序博客网 时间:2024/06/05 00:56
陷阱1:一边遍历,一边删除列表元素
可能出现问题:下标超出范围报错,或者返回结果不正确。
python 的列表遍历删除
陷阱2:b=a,修改a,结果b也被改变了。
python的内存管理机制
陷阱3:input输入一个数字,使用时发现变成了字符串。
如果想使用input()函数输入一个数值,在得到结果后需要用int()将字符串类型转换为数值类型。
陷阱4:在for循环体内改变循环变量的值,结果下次循环依然不被影响。
for i in range(3):print "original:",ii=i+3print "new",ioriginal: 0new 3original: 1new 4original: 2new 5典型的用C语言思想,python并不买账。
陷阱5:remove是删除首个符合条件的元素,而不是根据特定索引。
>>> a=[1,2,3,1]>>> a.remove(a[-1])>>> a[2, 3, 1]>>>如上代码,本来是想删除最后一个元素,结果误删第一个。
而对于 del 来说,它是根据索引(元素所在位置)来删除的,如下例:
>>> a=[1,2,3,1]>>> del a[0]>>> a[2, 3, 1]
pop是根据索引,返回的是索引指向那个数值。
>>> a=[1,2,3,1]>>> a.pop(2)3
陷阱6:python中字典的items()函数返回类型为list
我们知道两个列表可直接相加,两个字典直接相加会报错。
于是想到一种相加方式:a.items()+b.items()。但是错误地得到了一个列表。
>>> a={1:2}>>> b={3:4}>>> a+bTraceback (most recent call last): File "<pyshell#123>", line 1, in <module> a+bTypeError: unsupported operand type(s) for +: 'dict' and 'dict'>>> c=a.items()+b.items()>>> c[(1, 2), (3, 4)]>>> type(c)<type 'list'>正确使用方式:update()
>>> a{1: 2}>>> b{3: 4}>>> a.update(b)>>> a{1: 2, 3: 4}
陷阱7:元组或者列表加括号等于自身
>>> a=(1,2)>>> (a)(1, 2)>>> b=[1,2]>>> (b)[1, 2]>>> tuple(a)(1, 2)>>> tuple(b)(1, 2)>>> tuple([a])((1, 2),)这告诉我们如果需要使用元祖,最好用tuple()函数转换,而不是加括号强制转化。
陷阱10:迭代器无法改变列表内容
>>> a=["1\t4","a\tb"]>>> for item in a:item = item.split("\t")>>> a['1\t4', 'a\tb']>>> for i in range(len(a)):a[i]=a[i].split("\t")>>> a[['1', '4'], ['a', 'b']]
0 0
- Python 中的常见陷阱
- Python中的陷阱
- python中文字串处理中的陷阱
- Python Unicode字符串格式化中的一个陷阱
- python陷阱
- Python陷阱
- Python组元陷阱
- Python小陷阱
- python中函数陷阱
- python的陷阱1
- Python陷阱汇总
- Python作用域陷阱
- 陷阱!python参数默认值
- python的陷阱
- 陷阱!python参数默认值
- python文件命名陷阱
- python,tuple陷阱
- Python的诡异陷阱
- css优先级
- Html+CSS CSS3中 transitions属性详解
- ViewPager左右滑动页面,下面的按钮跟着动态变化
- java0x01 eclipse基本操作
- linux下svn配置
- Python中的陷阱
- Java hashCode
- EventBus源码解读详细注释(5)事件消息继承性分析 eventInheritance含义
- 获取指定时间的offsets类:GetOffsetShell 源码导读
- 跟着Google学Android —— 1.3 来创建个非常简单的UI吧
- 1.1. Creating a New Project from Maven Archetype 从Maven Archetype创建一个新项目
- OC中关于时间的几个函数及格式化时间
- AlertController工具类的封装,让AlertController变得更简单
- 数组去重