您的位置:首页 > 编程语言 > Python开发

Python随学随记(2)—— 数字、映射与集合

2016-07-24 22:04 246 查看

数字类型

整型:

布尔型(只有两个值的整型)、标准整型、长整型

双精度浮点型:占8个字节,带小数点和e(科学计数法可选)

复数

长整型类型是标准整型类型的超集,能表达的数值与内存大小相关(远大于其它语言的长整型)

操作数自动转换为同类型的内建函数:
coerce()


位操作符(只用于整型):取反
~num
、与
&
、或
|
、异或
^
、左移
<<
、右移
>>


数字类型转换函数(工厂函数):
int()
long()
float()
complex()
bool()


功能函数:
abs()
coerce(x,y)
divmod(x,y)
pow(x,y,mod)
(主要用于密码运算)
round(x,n)


仅整型的内建函数:
hex()
oct()
chr(num)
ord(chr)
unichr(num)


没有
__nonzero__()
方法的对象默认值是
True


常用处理数值的模块: decimal、array、math/cmath、operatorrandom

第三方模块:Numeric(NumPy)、SciPy

random模块:
randint(n1,n2)、uniform(n1,n2)、random()、choice(order)、randrange(参数同range)


映射类型和集合

映射类型对象(字典)里哈希值(键key)和指向的对象(值value)是一对多的关系(但不允许一个键对应多个值)

字典类型与序列类型容器区别是存储和访问数据的方式不同:

前者可用其他对象类型做键(与存储的数据值相关联,无序),

序列类型用有序的数字键做索引将数据以数组的形式存储,索引值与数据无关

哈希表是一种数据结构:存储的数据叫(value), 是根据与他相关的一个被称作键(key)的数据项进行存储的

哈希表的算法是获取键,对键执行一个叫做哈希函数的操作,根据计算结果在数据结构的某个地址中来存储你的值

哈希表一般有很好的性能, 因为用键查询相当快

dict.fromkeys(序列, value)
:生成一个以序列的元素作为键,所有的值为value,长度为
len(序列)
的字典

获得键/值列表:
keys()/values()
, 两者都有用
items()
; 只用字典名可以进行迭代

两种添加字典键值的方法:
字典[键] = 值
字典 = {'键n':值n……}


检查字典是否存在某键:成员操作符(
in
)、
has_key()
# 推荐用前者 后者将被弃用

如果一个对象在自己的生命周期中有一哈希值(hash value)是不可改变的,那么它就是可哈希的(hashable)

因为这些数据结构内置了哈希值,每个可哈希的对象都内置了
__hash__
方法

python中所有不可改变的的对象(imutable objects)都是可哈希的

我们用户所定义的类的实例对象默认是可哈希的(hashable),它们都是唯一的,而hash值也就是它们的
id()


用字典参数可以简化print语句:
print "good %(key)s" % dict


字典比较算法:先比长短 然后比键 再比值

dict()
:接收一个可迭代对象 里面的元素必须成对出现(第一个元素是键, 另一个是值, 如二元组) # 这时zip派上用场

如果是另一个映射对象, 则对其进行浅拷贝(相当于dict的BIF:
copy()
, 但速度没它快)

还可接收字典或关键字参数字典(类似
dict(a=1, b=2)
)

hash()
:可以判断某个对象是否可以做一个字典的值

若用比较操作符发现两者哈希值相等,即使两者的数据类型不同,它们的哈希值也相同(值相等的不同数字类型)

字典常用BIF:

dict.clear() dict.copy() dict.fromkeys() dict.get(k, def) dict.has_key()[成员操作符代之]

dict.items() dict.keys() dict.values()   dict.pop(k, def) dict.setdefault(k, def)

dict.update(dict2)  dict.iter*()[iteritems, iterkeys, itervalues]


对字典用
sorted()
返回一个有序的由字典键作为元素的列表

keys/items/values()
返回的是列表,
iterkeys/iteritems/itervalues()
返回惰性赋值的迭代器

集合有两种不同的类型:可变集合(set,用
set()
)和不可变集合(frozenset, 用
frozenset()
) 不可变集合可哈希

set常用方法:
add() update() remove() discard()[remove的友好操作] pop() clear()


集合类型操作符:

成员关系(
in
) 是否等价(
==
) 子集/超集(
< >
)

联合|(即or,
union()
) 交集&(即and,
intersection()
)

相对补集-(
difference()
) 对称差分^(
symmetric_difference()
)

当用操作符时,操作符两边的操作数必须是集合,在使用内建方法时,对象也可以是迭代类型
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: