温故知新,高级复读机
数字类型
- 整型:
- 标准整型、
长整型(删除线表示在python3中已去掉)
- 双精度浮点型:占8个字节,带小数点和e(科学计数法可选)
- 复数
- 特殊:布尔值(只有True或False,相当于1和0)
长整型类型是标准整型类型的超集,能表达的数值与内存大小相关(远大于其它语言的长整型)
- 操作数自动转换为同类型的内建函数:
coerce(x, y)
- 位操作符(只用于整型):取反
~num
、与&
、或|
、异或^
、左移<<
、右移>>
- 数字类型转换函数(工厂函数):
int()
long()
float()
complex()
bool()
- 功能函数:
abs()
divmod(x,y)
pow(x,y,mod)
(主要用于密码运算) round(x,n)
- 仅整型的内建函数:
hex()
oct()
chr(num)
ord(chr)
unichr(num)
- 没有
__nonzero__()
方法的对象默认值是True
- 常用处理数值的模块: decimal、array、math/cmath、operator、random
第三方模块:Numeric(NumPy)、SciPy
- random模块:
- 范围取随机整数
randint(n1,n2)
- 范围取随机数
uniform(n1,n2)
- 随机0-1间的小数
random()
- 从参数序列中取随机数
choice(order)
- 指定长度序列并从中取随机数
randrange(参数同range)
映射类型和集合
- 映射类型对象(dict)由键值对(key-value)组成,一个键对应一个值,值也可以是容器类型(包含多个值)
- 字典类型与序列类型容器区别是存储和访问数据的方式不同:
- 字典类型可用其他对象类型做键(与存储的数据值相关联, 无序),
- 序列类型用有序的数字键做索引将数据以数组的形式存储,索引值与数据无关
- 哈希表是一种数据结构:存储的数据叫值(value), 根据与它相关联(通过计算)的被称作键(key)的数据项进行存储
它的算法是获取键,对键执行一个叫做哈希函数的操作,根据计算结果在数据结构的某个地址中来存储你的值
一般有很好的性能, 因为用键查询相当快
dict.fromkeys(序列, value)
:生成一个以序列的元素作为键,以相同的值为value,长度为len(序列)
的字典
- 获得键/值列表:
dict.keys()/values()
, 两者都获得items()
; 可以对字典对象进行迭代(迭代的是键)
- 两种添加字典键值的方法:
字典[键] = 值
、字典 = {'键n':值n……}
- 检查字典是否存在某键:成员操作符
in
、has_key()
- 如果一个对象在自己的生命周期中有一个哈希值(hash value)是不可改变的,那么它就是可哈希的(hashable)
每个可哈希的对象都内置了__hash__
方法,python中所有的不可变对象(imutable objects)都是可哈希的
我们用户所定义的类的实例对象默认是可哈希的(hashable),它们都是唯一的,而hash值也就是它们的id(通过id()
获得)
用字典参数可以简化print语句:print "good %(key)s" % dict
- 字典的比较算法:先比长度,然后比键,最后比值
dict()
:接收一个可迭代对象 里面的元素必须成对出现(第一个元素是键, 另一个是值, 如[('a',11), ('b',22)]
) # 可以用zip()
如果是另一个映射对象, 则对其进行浅拷贝(相当于字典的BIF:dict.copy()
, 但速度没它快)
还可接收另一个字典或关键字参数生成字典(dict(a=1, b=2)
)
hash()
:获取对象的哈希值,可以判断某个对象是否可以做一个字典的值
若用比较操作符发现两者哈希值相等,即使两者的数据类型不同,它们的哈希值也相同(例如值相等的不同数字类型)
- 字典常用BIF:
clear() copy() fromkeys() get(k, def) items() keys() values() pop(k, default) setdefault(k, default) dict.update(dict2)
- 可以对字典用
sorted()
,返回一个有序列表
keys/items/values()
返回的是列表, iterkeys/iteritems/itervalues()
返回惰性赋值的迭代器
- 集合有两种不同的类型:
- 可变集合(set,用
set(可迭代对象)
, 如set([1, 2])
生成{1,2}
)
- 不可变集合(frozenset, 用
frozenset()
, 可哈希)
- set常用方法:
add() update() remove() discard() pop() clear()
- 集合类型操作符:
- 成员关系(
in
)、是否等价(==
)、子集/超集(< >
)
- 联合
|
(即or,union()
)、交集&
(即and,intersection()
)
- 相对补集
-
(difference()
)、对称差分^
(symmetric_difference()
)
- 当用集合操作符时,操作符两边的操作数必须是集合