Python为什么要使用内置对象类型
Python程序可以分解为模块、语句、表达式、以及对象:
-
- 程序由模块构成
- 模块包含语句
- 语句包含表达式
- 表达式建立并处理对象
说明:
在Python中,数据是以对象的形式出现,无论是Python提供的内置对象还是扩展对象,所以学习Python可以从底层开始,探索Python使用的内置对象。
主要内置对象:
-
- 可变序列: 列表
- 不可变序列:字符串、元祖
- 集合
- 映射(字典)
- 数字
- 文件
- 其他类型
内置对象的作用:
- 内置对象往往比定制的数据结构更有效率,这是因为Python内置对象优化了用c实现数据结构的算法。
- 内置对象使得程序更容易编写。例如,集合(列表)和搜素表(字典),可以马上使用它们,而不需要自己去编写这些数据结构。
- 内置对象可拓展。对于复杂的一些应用任务,需要提供自己编写的对象类型,这时候可以利用Python的类或c语言的接口,往往这些拓展对象是建立在内置对象的基础上。
常用内置对象简介
列表:
-
- 可包含任意对象的有序集合
- 通过下标索引(位置偏移)访问元素
- 可变长度,异质,可任意嵌套
- 支持原位改变
- 对象引用数组
列表基础运算:
列表主要方法:
列表推导式:
- 列表推导式提供了从序列创建列表的简单途径。
- 常应用程序将一些操作应用于某个序列的每个元素,用其获得的结果作为生成新列表的元素,或者根据确定的判定条件创建子序列
列表推导式例子:
常考点:
- list.extend() 和 list.append()方法区别
- sorted(list) 和 list.sort()方法区别
- 【面试必备之Python深、浅拷贝。】
元祖:
- 可包含任意对象的有序集合
- 通过下标索引(位置偏移)访问元素
- 固定长度,异质,可任意嵌套
- 对象引用数组
说明:元祖与列表基础方法类似,主要区别在于元祖长度是固定的。元组使用小括号,列表使用方括号
为什么有了列表还要元祖:
元祖的不可变性提供了某种完整性,这样可以确保元祖子啊程序中不会被另一个引用修改,而列表就没有这样的保证。
集合:
- 集合(set)是一个无序的不重复元素序列。
- 可以使用大括号{ }或者set()函数创建集合
- 创建一个空集合必须用set()而不是{ }
- 列表推导式,同样集合支持集合推导式(Set comprehension):
集合求交集等操作:
说明:
-
- 集合中副本是被忽略的
- 集合元素的顺序是随意的
- 集合是可变的,所以不能用做字典的键。
- 集合本身只能包含不可变值,所以也就不能包含其他集合
限于篇幅:其他关于集合操作可查看官方文档。
http://www.python.org/
字典:
除了列表之外,字典也许是Python中最灵活的内置数据结构类型,字典的主要属性:
-
- 通过键而不是偏移量来读取
- 任意对象的无序集合
- 可变成、异构、任意嵌套
- 属于可变映射类型
构造字典的方法:
- 直接通过赋值创建
- 通过元祖构造
- 键值对构造
- 利用fromkeys()方法构建字典
第一个参数是一个迭代对象,作为字典的键
第二个参数是一个值(可选),作为字典中的值
- 通过zip构造
字典常用方法:
注意事项:
- 对于序列的运算操作对字典无效
- 对新索引赋值会添加项
- 键不一定总是字符串
本节关键术语
- 内置对象
- 数据结构
- 列表推导式
- 异构
- 列表、元祖、集合、字典
- 赋值、引用
Last:
- 其他内置对象限于篇幅不做介绍,点击阅读全文查看官方文档。