小甲鱼Python06 序列字典集合

一、序列

1.id函数 is运算符

我们首先思考下字符串、元组、列表的共同点:

都有很多共同的运算符。都可以通过索引来获取元素,第一个元素索引都是0,都可以通过切片的方法获取某个范围内元素的集合。

以上三种统称为序列。序列分为可变序列和不可变序列。

+ 表示两个序列进行拼接,*表示重复。

Python中的每一个对象都有三个部分:类型、值、地址。id 函数返回一个对象的具体内存地址。

is 和is not称为同一性运算符。is运算符用来判断两个对象是否指向唯一地址的引用,尽管值相同,地址可能不同,is运算符仍然返回FALSE。

注意看这里,不可变序列进行乘2操作时,它的地址没有改变;而可变序列进行乘2操作,地址改变

2.in 和not in,del语句

in运算符用于判断一个对象是否在另一个对象里。del语句用于删除一个或多个指定的对象。

3.列表 元组 字符串转换

转换成列表用list函数

转换成元组用tuple函数

转换成字符串用str函数

4.最小最大函数

5.len 和sum函数

len函数对于32位平台来说,最大能检测2^32-1这么长的对象。

sum用于求和。

6.排序和逆转

sort是列表的内置函数,只能对列表起作用,而sorted是普通函数,对列表、字符串、元组都有作用。设定reverse=TRUE,将会逆转列表。

sort会改变原本的列表,而sorted是生成一个 新的列表,原本列表不会更改。

key参数是一个可选参数,用于指定一个函数,该函数将作用于可迭代对象中的每个元素,以生成排序时用于比较的键。元素根据这些键进行排序,而不是直接比较元素本身。

reversed函数返回的是一个反向迭代器,可以用list函数转化为我们想要的列表。

7.all 和any函数

all函数判断是否所有元素的值都为真,any函数判断是否有某个元素的值为真。

8.enumerate列举函数

将一个可迭代对象生成一个枚举对象,该对象包含每个元素的索引和对应的值,常用于循环迭代时获取元素的索引位置。

9.zip函数

可以看到,当长度不匹配时,我们以最短的为准。如果想要以最长的为准,我们需要用itertools模块的zip_longest函数

10.map函数

map() 函数会对每个可迭代对象中的元素依次应用 function 函数,并将结果组成一个新的可迭代对象返回。如果传入的可迭代对象长度不等,则 map() 函数会以最短的可迭代对象为准,其他较长的可迭代对象的元素将被忽略。

11.可迭代对象与迭代器

迭代器一定是可迭代对象。不过迭代器只能使用一次,而可迭代对象一直可以使用,

filter()函数是内置函数之一,用于过滤可迭代对象中的元素,返回满足指定条件的元素的迭代器。

iter函数用于将可迭代对象转化为迭代器,next函数可以逐个获取迭代器中的元素。

二、字典

字典是Python中唯一实现映射关系的内置类型。

1.字典基本语法

字典(Dictionary)是一种无序的集合数据类型,用于存储键(key)-值(value)对。字典是可变的,可以添加、删除和修改其中的元素。字典的键必须是唯一的,而值可以是任意的数据类型。

创建字典的二种方式,以及打印获取字典的元素:

增加或者删除字典中的元素:

判断元素是否在字典中,以及获取字典的长度:

快速初始化字典:fromkeys方法

在序列中元素是可以重复的,字典中的项(也就是键值对)是不可以重复的。一个键就是对应一个值,不会重复对应。

删除字典中的元素可以用pop方法:

popitem方法也可以用来删除,在Python3.7之后用于删除最后一个键值对:

如果我们只希望清除字典的内容,可以使用clear方法。

改:修改字典中的值可以用update方法,update方法更新字典中指定键的值,也可以传入一个字典更新全部的键值对。

查找键对应的值用get方法:

查找是否存在一个键用setdefault方法,并且可以指定default参数,用于键不存在时自动添加。

2.获取键值对、键、值的视图对象

items(),values(),keys()方法分别获取键值对、值、键的视图对象。当字典发生更新时,视图对象也一起更新。

3.其它方法与嵌套

copy用于浅拷贝,len用于获取键值对数量,list用于字典转换成列表,iter用于字典转成迭代器。

嵌套字典和列表一样,并不是稀奇事:

4.字典推导式

如上图所示,我们的字典推导式让键值对互换,理由是:items获取到了键值对,键是k,值是v,我们前面重新构成字典的是v:k,这样就完成了键值对互换。

同样的,我们也可以利用推导式获取字符串的编码值:

为什么下面这段代码输出是这样?因为x等于1时,y从2,4,6分别取值,只不过一个键只能对应一个值,因此会被6覆盖掉,其它两个数字同理。

三、集合

集合拥有无序性、互异性,集合内的元素不允许重复,并且集合是无顺序存放的,集合和字典有着密切关系。

1.创建

创建集合有三种方式,集合推导式、set内置函数、直接大括号创建

由于集合元素没有顺序,因此通过下标获取集合元素是不可行的。

检查一个序列是否有重复元素可以利用集合,去重也可以利用集合:

2.子集 超集 对称差

判断集合之间是否不相关:isdisjoint()

是否是子集:issubset()     是否是超集 issuperset()

计算当前集合和其它集合构成的并集、交集、差集:union,intersection,difference

上述这些方法支持多个集合一起求交集、并集、差集。

对称差集合为symmetric_difference()只能支持一个参数

Python提供了运算符来判断集合关系,<=为真子集,<为子集,>为超集,>=为真超集

|为并集,&为交集,-为差集,^为对称差集

3.不可变集合frozen

只适用于set的方法:

同时,求交intersection_update...等等方法,会改变s这个集合,因此也只用于set

注意这里,update方法传入字符串是迭代获取每个元素,但是add方法是传入字符串一个整体。

删除用remove或者discard,不同之处在于remove遇到没有的元素会出现异常,而discard会不进行任何操作。

删除还有pop方法,用于从集合中随机删除一个元素。

4.可哈希

想要正确创建字典和集合,要求字典的键和集合元素都是可哈希的。

可变对象是不可以计算哈希值的。

上图可以看出,集合元素必须是不可变对象。

那么我们如何实现嵌套集合呢?用frozen_set!

集合背后有散列表的支持,而列表则没有,所以,列表的每次查找都要从头到尾地扫描,而集合只需要简单地查表操作。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值