python生成元祖_python基础~元祖与字典原理

生成器推导式创建元组:,生成器推导式与列表推导式类似,只是生成器推导式使用小括号。不管什么方式使用,元素访问结束后,如果需要重新访问其中的元素,必须重新创建该生成器对象。

元组特点:1、不可变序列 2、元组的访问和处理速度比列表快 3、与整数和字符串一样,元组可以作为字典的键,列表永远不能作为字典的键使用。

字典:“键值对”包含键对象和值对象,“键”是任意的不可变数据,比如:整数、浮点数、字符串、元组。字典中通过键对象找到对应的值对象。

字典的创建:1、dict() 2、{} 3、zip() 4、通过fromkeys 创建值为空的字典

>>> a = dict.fromkeys(['name','age','job'])

字典元素的访问:1、通过键获得值,若键不存在,则抛异常! 2、get()方法获得值,有电是键不存在,返回None,也可以设置指定的返回对象。如a.get(‘age’,’不存在’) 3、列出所有的键值对,a.items() 4、列出所有的键或值 a.keys() a.values()

5、len()键值对的个数 6、检测一个“键”是否在字典中,’name’ in a

字典元素的添加、修改、删除:1、新增“键值对”,若已存在,则覆盖旧的键值对。否则新增。 2、update()将字典中所有的键值对全部添加到旧字典对象上,若key有重复,则覆盖。

字典中元素的删除,可以使用del()方法,或者clear()删除所有的键值对,pop()删除指定

键值对,并返回对应的“值对象”;

字典是“无序可变序列”,可用popitem()随机删除和返回该键值对。

序列解包用于元组、列表、字典。对字典解包,分三种情况。对键解包,对键值解包,对值解包。

字典核心底层原理:其核心是散列表,是一个稀疏数组,每个数组单元叫bucket,其包含两个部分,一个是键对象的引用,一个是值对象的引用。偏移量也就是次方的意思,2的3次方是8,2的6次方是32。

python 会根据散列表的拥挤程度扩容。“扩容”指的是:创造更大的数组,将原有内容

拷贝到新数组中。接近2/3 时,数组就会扩容。

取出键值对的过程如下:

用法总结:1、键必须可散列(数字、字符串、元组)2、自定义对象需要支持下面三点(1、支持hash()函数 2、支持通过__eq__()方法检测相等性 3、若a == b为真,则hash(a)==hash(b)也为真)

3、字典在内存中开销巨大,典型的空间换时间。 4、键查询速度较快 5、字典可能存在扩容,导致散列表中键的次序变化,因此不要再遍历字典的同时进行字典的修改。

集合:无序可变,元素不能重复,实际是字典实现,集合中所有的元素都是字典中的键对象。

集合创建和删除:del只是删除一个对象的引用而已,并不是删除其内存。1、用{}进行创建,用add()添加元素 2、使用set(),将可迭代对象变成集合 3、remove()删除指定元素 5、clear()清空整个集合

集合相关操作:并、交、差

以a创建name整个键值对为例

假设数据长度为8的话,示意图如下

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值