常用数据结构
1)元组
元组是一种静态的数据结构,无法修改,若要修改只能重新生成新的元组。
![](https://ucc.alicdn.com/miaw3pfh72di6/developer-article692951/20241021/ac86c2696ad045a787b170d8de717f35.webp?x-oss-process=image/resize,w_1400/format,webp)
输出结果:
![](https://ucc.alicdn.com/miaw3pfh72di6/developer-article692951/20241021/f34062d6399949e08ecf1aad1ab78b8f.webp?x-oss-process=image/resize,w_1400/format,webp)
元组元素的获取是通过索引值去获得的;例如上面的tup1[0]返回apple;另外你可以直接把tup1一次性赋给多个值,例如上面的tup1一次性赋值给a,b,c,d; tup1[1:3]是对元组的截取,跟字符串的切片是一样,返回('banana', 'grape')
当然也是可以层次嵌套的;索引方法一样; y元组还支持直接通过+进行合并元组操作,其实是生成一个新的元组。
在学习中有迷茫不知如何学习的朋友小编推荐一个学Python的学习q u n 227 -435- 450可以来了解一起进步一起学习!免费分享视频资料
元组的遍历也是很简单的:
![](https://ucc.alicdn.com/miaw3pfh72di6/developer-article692951/20241021/1076afaac9904e04b65a4a3ab9aea381.webp?x-oss-process=image/resize,w_1400/format,webp)
输出结果:
![](https://ucc.alicdn.com/miaw3pfh72di6/developer-article692951/20241021/b82606f8c46147bd8aec8348fc0ae0ce.webp?x-oss-process=image/resize,w_1400/format,webp)
直接for遍历出来的是一个个元素,但最好还是建议先查询元素个数,然后根据索引值去获取value值,尤其对多层嵌套的元组来说,这种方式更好。
2)列表
列表是我们常用的,所以这一块一定要好好掌握:
![](https://ucc.alicdn.com/miaw3pfh72di6/developer-article692951/20241021/83c393b966754391b320c65a24c5b6e0.webp?x-oss-process=image/resize,w_1400/format,webp)
输出结果:
![](https://ucc.alicdn.com/miaw3pfh72di6/developer-article692951/20241021/07b70ddc2bd8413083b6137d4335184c.webp?x-oss-process=image/resize,w_1400/format,webp)
列表的查询,遍历,和切片截取功能跟元组一样;添加元素可以一般是直接append("XXX")就往列表后面添加值,如果要指定位置添加元素,可以像lists.insert(4,"ouyang5"),在指定的索引值位置插入值;
移除可以用remove指定的元素,如果想要弹出最后一个元素,可以用pop方法;
列表的其他常用方法:
![](https://ucc.alicdn.com/miaw3pfh72di6/developer-article692951/20241021/0415e8e546284ff898cbc0a9d4e9e8e9.webp?x-oss-process=image/resize,w_1400/format,webp)
输出结果:
![](https://ucc.alicdn.com/miaw3pfh72di6/developer-article692951/20241021/aad6556cf4ef48f2a94921b63e30ee80.webp?x-oss-process=image/resize,w_1400/format,webp)
join是把列表转为字符串,用逗号隔开;sort是根据字典排序,即字母的数字编码大小排序;reverse是反转排序;最后一个clear就是清空列表;
3)字典
字典很多方法也是跟list是一样的:
![](https://ucc.alicdn.com/miaw3pfh72di6/developer-article692951/20241021/eed5a26dcdb24853bf3f3a5e477b287d.webp?x-oss-process=image/resize,w_1400/format,webp)
输出结果:
![](https://ucc.alicdn.com/miaw3pfh72di6/developer-article692951/20241021/be5b6877e891461f904c22fd712b1feb.webp?x-oss-process=image/resize,w_1400/format,webp)
字典是一个键值对集合,可以支持修改;排序方法,这里使用lambda函数,这里就先不讲了,后面会涉及这块知识,需要知道有这一块功能就行。
字典其他一些用法:
![](https://ucc.alicdn.com/miaw3pfh72di6/developer-article692951/20241021/2d128d2e808846e7b9ef44db8d40a66a.webp?x-oss-process=image/resize,w_1400/format,webp)
输出结果:
![](https://ucc.alicdn.com/miaw3pfh72di6/developer-article692951/20241021/d40c7ac08ec24996acc9609e437231e0.webp?x-oss-process=image/resize,w_1400/format,webp)
字典的浅复制copy和deepcopy在3.6版本的功能是一样的了,以前的版本,浅复制修改原字典,copy出来的字典也会跟着变化,但现在都不会了;因为原先copy出来的只是做了一个指引而已,内存地址一样。deepcopy就是新开辟一个内存空间。
字典的update很好用,他会合并两个字典,去掉重复的元素。
4)set集合
set集合里的元素是不能重复的,list里面的元素是可以重复的。
![](https://ucc.alicdn.com/miaw3pfh72di6/developer-article692951/20241021/412a9b0f6dcd48f493e53c6a7ec704ef.webp?x-oss-process=image/resize,w_1400/format,webp)
输出结果:
![](https://ucc.alicdn.com/miaw3pfh72di6/developer-article692951/20241021/7703b167b53c42c2a4dffb544f6552bc.webp?x-oss-process=image/resize,w_1400/format,webp)
set的定义是在list列表的基础上的,去掉重复的,当然它的索引取值等方式是跟列表是一样的,这里就不在说,通样,它也有一个更新的功能,跟字典很类似。
总结:
这些集合是很常用,对常用的方法一定要熟悉,用的时候可以顺手拈来。