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

本文介绍了Python中的数字类型,包括整型、浮点型和复数,强调了长整型的特点和位操作符。接着,讨论了映射类型,特别是字典,解释了哈希表的工作原理和字典的访问方式。此外,还概述了集合的两种类型(可变和不可变),并列举了相关操作和方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数字类型

  1. 整型:
    布尔型(只有两个值的整型)、标准整型、长整型
    双精度浮点型:占8个字节,带小数点和e(科学计数法可选)
    复数
  2. 长整型类型是标准整型类型的超集,能表达的数值与内存大小相关(远大于其它语言的长整型)
  3. 操作数自动转换为同类型的内建函数:coerce()[在python3中已弃]
  4. 位操作符(只用于整型):取反~num、与&、或|、异或^、左移<<、右移>>
  5. 数字类型转换函数(工厂函数):int() long() float() complex() bool()
  6. 功能函数: abs() divmod(x,y) pow(x,y,mod)(主要用于密码运算) round(x,n)
  7. 仅整型的内建函数: hex() oct() chr(num) ord(chr) unichr(num)
  8. 没有__nonzero__()方法的对象默认值是True
  9. 常用处理数值的模块: decimal、array、math/cmath、operatorrandom
    第三方模块:Numeric(NumPy)、SciPy
  10. random模块:randint(n1,n2)、uniform(n1,n2)、random()、choice(order)、randrange(参数同range)

映射类型和集合

  1. 映射类型对象(字典)里哈希值(键key)和指向的对象(值value)是一对多的关系(但不允许一个键对应多个值)
  2. 字典类型与序列类型容器区别是存储和访问数据的方式不同:
    前者可用其他对象类型做键(与存储的数据值相关联,无序),
    序列类型用有序的数字键做索引将数据以数组的形式存储,索引值与数据无关
  3. 哈希表是一种数据结构:存储的数据叫(value), 是根据与他相关的一个被称作键(key)的数据项进行存储的
    哈希表的算法是获取键,对键执行一个叫做哈希函数的操作,根据计算结果在数据结构的某个地址中来存储你的值
    哈希表一般有很好的性能, 因为用键查询相当快
  4. dict.fromkeys(序列, value):生成一个以序列的元素作为键,所有的值为value,长度为len(序列)的字典
  5. 获得键/值列表:keys()/values(), 两者都有用items(); 只用字典名可以进行迭代
  6. 两种添加字典键值的方法: 字典[键] = 值字典 = {'键n':值n……}
  7. 检查字典是否存在某键:成员操作符(in)、has_key() # 推荐用前者 后者将被弃用
  8. 如果一个对象在自己的生命周期中有一哈希值(hash value)是不可改变的,那么它就是可哈希的(hashable)
    因为这些数据结构内置了哈希值,每个可哈希的对象都内置了__hash__方法
    python中所有不可改变的的对象(imutable objects)都是可哈希的
    我们用户所定义的类的实例对象默认是可哈希的(hashable),它们都是唯一的,而hash值也就是它们的id()
  9. 用字典参数可以简化print语句:print "good %(key)s" % dict
  10. 字典比较算法:先比长短 然后比键 再比值
  11. dict():接收一个可迭代对象 里面的元素必须成对出现(第一个元素是键, 另一个是值, 如二元组) # 这时zip派上用场
    如果是另一个映射对象, 则对其进行浅拷贝(相当于dict的BIF:copy(), 但速度没它快)
    还可接收字典或关键字参数字典(类似dict(a=1, b=2))
  12. hash():可以判断某个对象是否可以做一个字典的值
    若用比较操作符发现两者哈希值相等,即使两者的数据类型不同,它们的哈希值也相同(值相等的不同数字类型)
  13. 字典常用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]
  14. 对字典用sorted() 返回一个有序的由字典键作为元素的列表
  15. keys/items/values()返回的是列表, iterkeys/iteritems/itervalues()返回惰性赋值的迭代器
  16. 集合有两种不同的类型:可变集合(set,用set())和不可变集合(frozenset, 用frozenset()) 不可变集合可哈希
  17. set常用方法:add() update() remove() discard()[remove的友好操作] pop() clear()
  18. 集合类型操作符:
    成员关系(in) 是否等价(==) 子集/超集(< >)
    联合|(即or,union()) 交集&(即and,intersection())
    相对补集-(difference()) 对称差分^(symmetric_difference())
  19. 当用操作符时,操作符两边的操作数必须是集合,在使用内建方法时,对象也可以是迭代类型
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值