第四章—介绍python对象类型
python中一切皆为对象;python程序可以分解为模块、语句、表达式以及对象:
- 程序由模块构成
- 模块包含语句
- 语句包含表达式
- 表达式创建并处理对象
python对象分为内置对象和自己编写的对象,内置对象由很多的优点,能解决大部分的问题,除非除非你有内置类型无法提供的对象要处理
对象类型 | 字面量/构造示例 |
数字 | 1234, 3.12, 3+4j, ob11 |
字符串 | 'i love u or i hate u' |
列表 | [1,[2,'three']] |
字典 | {'food':'spam', 'taste':'yum'} |
元组 | (1,'spam',4,'u') |
文件 | open('egg.txt') |
集合 | set('abc'),{'a','b','c'} |
其他核心类型 | 类型、None、bool |
程序单元类型 | 函数、模块、类 |
python实现相关类型 | 以编译代码、调用栈跟踪 |
#字面量可以单纯理解为产生对象的表达式
这里只对python内置对象做简单的介绍,会有单独的章节介绍用法
一:数字
作为计算机语言仍然存在计算精度的问题,不过可以调用相关库提高精度
python有整数、浮点数、复数、固定精度的十进制数、带分子分母的有理分数以及全功能集合第三方扩展领域等
常用的库有math和random库
二:字符串
字符串用来记录文本信息和任意字节的集合。要知道字符串,列表都属于序列,序列可以进行索引,分片;而字典是映射,可以进行映射操作。在此不举实例
其次,要注意字符串属于不可变类型,在创建后不能原位置(内存)改变值,但你可以创建一个新的字符串并以同一变量名对其进行赋值,因为python会清理旧的对象(蛮喜新厌旧的)
可变类型 | 不可变类型 |
列表、字典、集合 | 字符串、数字、元组 |
字符串处理常用函数:
Str.lower()
Str.upper()
Str.split() 分割
Str.count() 计数
Str.replace(old, new)
Str.center(width, fillchar)
Str.strip() 去空格
Str.jion(iter)在iter变量除最后一个字符外每个元素后增加iter
str.find() 查找
同时作者强调Unicode和re在一些领域十分重要
三:列表
列表也是序列,可以进行分片、索引等操作
列表十分强大,同时也是可变的支持嵌套和推导,支持任意类型对象,且没有固定大小(但不能超出列表末尾之外的索引)
列表处理常用函数:
list.count() 统计某个元素出现的次数
list.append() 在列表末尾添加新对象
list.expend() 在列表末尾一次可添加1到多个对象
list.reverse() 逆序
list.remove() 按值删除
list.pop() 默认移除最后一个元素
list.insert() 插入对象
list.copy() 复制一个副本,两个列表的值互不影响
list.index() 根据索引获取对象
list.sort() 排序
列表推导表达式:提供了一种处理矩阵这样结构的强大工具
四:字典
前面提过字典不是序而是映射,映射不是按位置排序的。且字典由键值对构成,通过访问键来返回值,同样支持嵌套
五:元组与集合
元组是不可变的且支持的操作很少,这也是她的优点所在,这提供了一种完整性约束
集合是可变类型,但是不接受重复值且其中的元素必须是不可变类型的
其他类型不多做赘述了