Python核心内置类型分类,要点如下:
对象根据分类来共享操作;如,字符串,列表和元组都共享合并,长度和索引等系列操作
只有可变对象(列表,字典和集合)可以原处修改;不能原处修改数字,字符串或元组
文件导出的唯一方法,因此可变现并不针对适用于他们--当处理文件时,他们的状态可能会修改,但是,这于python核心了下的可变性限制并不完全相同
数字类型:整数,浮点数,复数,小数和分数
集合类似于一个无值的字典的键,但是它们不能映射,没有顺序。frozenset是集合的一个不可变的版本
| 对象类型 | 分类 | 是否可变 |
| 数字 | 数值 | 否 |
| 字符串 | 序列 | 否 |
| 列表 | 序列 | 是 |
| 字典 | 映射 | 是 |
| 元组 | 序列 | 否 |
| 文件 | 扩展 | N/A |
| sets | 集合 | 是 |
| frozenset | 集合 | 否 |
| bytearray | 序列 | 是 |
对象灵活性:
列表,字典,元组可以包含任何种类的对象
列表,字典,元组可以任意嵌套
列表,字典可以动态的扩大和缩小
引用VS拷贝
赋值操作总是储存对象的引用,而不是这些对象的拷贝。需要意识到原处修改可变对象时可能会影响呈现中其他地方的对象引用。需要避免,就要用复制
1. 没有限制条件的分片表达式(L[:])能够复制序列
2. 字典copy方法(D.copy())能够复制字典
3. 有些内置函数(如,list)能够生成拷贝(list(L))
4. copy标准库模块能够生成完整拷贝
注意:1,2只能做顶层复制,不能复制嵌套的数据结构。如果你需要一个深层嵌套的数据结构的完整的,完全独立的拷贝就要使用标准的copy模块--包括import copy语句,并编辑X=copy.deepcopy(Y)对任意的嵌套对象Y做完整的复制。
比较,相等值和真值
== 测试值的相等
is 测试是否指向同一个对象
Python内部暂时储存并重复使用短字符作为最佳化,使用不同变量会共享同一个字符串。
相对大小的比较也能递归的应用于嵌套的数据结构:
>>> l1 = [1,('a',3)]
>>> l2 = [1,('a',2)]
>>> l1<l2,l1==l2,l1>l2
(False, False, True)
数字通过相对大小进行比较
字符串按字典顺序,一个字符一个字符进行比较
列表和元组从左到右对没部分进行比较
字典通过排序后的键进行比较
数字混合类型比较在python3中是错误的,如 1<'spam'
一般来说,结构化对象的比较和谐是你把对象写出文字,从左到右一次一个地比较所有部分
Python中真和假的含义
数字如果非零,则为真
其他对象如果非空,则为真
None对象
这是Python中一种特殊数据类型的唯一值,一般起到一个空的占位作用,与C语言的NULL指针类似。其值为假。
预先分片一个100项的列表:
L = [None]*100
bool类型:True or False(首字母大写)
Python的类型层次:Python中任何东西都是对象类型,而且可以由Python来处理。例如可以传递一个类给函数,赋值为一个变量,放入一个列表或字典中等。
Type对象:即使是类型本身也是对象类型
一个类实例的类型即使该实例产生自哪个类
Python中的其他类型
除了已经学习过的核心对象,以及后面要学的函数,模块和类,典型的python安装含义很多其他可用的对象类型,允许作为C语言的扩展程序或是python的类:正则表达式对象,DBM文件,GUI组件,网络套接字等。
区别:内置类型有针对他们的对象的特殊语言生成语法,而其他工具必须先导入才可以使用。
内置类型陷阱
赋值生成引用,而不是拷贝
>>> l1 = [1,2,3]
>>> l2 = ['x',l1,'y']
>>> l2
['x', [1, 2, 3], 'y']
>>> l1[1] = 0
>>> l2
['x', [1, 0, 3], 'y']
重复能够增加层次深度
>>> l1
[1, 0, 3]
>>> X = l1*4
>>> Y = [l1]*4
>>> X
[1, 0, 3, 1, 0, 3, 1, 0, 3, 1, 0, 3]
>>> Y
[[1, 0, 3], [1, 0, 3], [1, 0, 3], [1, 0, 3]]
>>> l1[0]=0
>>> X
[1, 0, 3, 1, 0, 3, 1, 0, 3, 1, 0, 3]
>>> Y
[[0, 0, 3], [0, 0, 3], [0, 0, 3], [0, 0, 3]]
留意循环数据结构
>>> L = ['blue']
>>> L.append(L)
>>> L
['blue', [...]]
Learning Python, Fourth Edition, by Mark Lutz.
236

被折叠的 条评论
为什么被折叠?



