Python类型总结

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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值