人生苦短,你用python吗?
化学专业的小凯,却喜欢上了计算机语言,业余时间入门了python,从此无法自拔,话不多说,接下来与大家分享我的学习笔记。(元组、列表)
Python中的数据结构主要有序列、集合、字典。
一.元组
元组(tuple)是一种序列(sequence)结构。
1.序列
序列是一种可迭代的、元素有序、可以重复出现的数据结构,序列可以通过索引访问元素。
序列包括:
- 列表(list)
- 字符串(str)
- 元组(tuple)
- 范围(range)
- 字节序列(bytes)
序列可进行的操作有索引、分片、加和乘。
2.创建元组
元组是一种不可变序列,一旦创建就不能修改。创建元组可以使用tuple([iterable])函数或者直接用逗号将元素分开。
![3493fba589add6915fc441ef57b44c9e.png](https://i-blog.csdnimg.cn/blog_migrate/dab39cfe7792d55d1497fc71713b2df5.jpeg)
创建元组需要注意:
![aed48dd2ad6608b614cbc02f764ea247.png](https://i-blog.csdnimg.cn/blog_migrate/dba2649cdcee6cac6e779981c3514e42.jpeg)
()可以创建空元组
元组只有一个元素时,后面的逗号不能省略
3.访问元组
元组作为序列可以通过下标索引访问其中的元素,也可以对其进行分片。
![21b1c87284fd57764c85eeefd65ab305.png](https://i-blog.csdnimg.cn/blog_migrate/dcdc671552c3f14d29b95b91dbc6b4d5.jpeg)
元组还可以进行拆包(Unpack)操作,就是将元组的元素取出来赋值给不同的变量。
![04a9867f065f49e25773758171f17b5c.png](https://i-blog.csdnimg.cn/blog_migrate/11680578ed18bc923d3be3a2c5eedb65.jpeg)
第①行是将元组a进行拆包操作,接收拆包元素的变量的个数应该等于元组个数,接收变量个数可以少于元组个数。第②行接收变量个数只有三个,最后一个很特殊,变量n前面有个星号,表示剩下的元素作为一个列表赋值给变量n,另外,还可以使用下划线指定不取值哪些元素,第③行表示不取第二个和第五个元素。
4.遍历元组
一遍使用for循环遍历元组
![0e8eebe5da7e330da0c7c1090163c05c.png](https://i-blog.csdnimg.cn/blog_migrate/724833561045e53e46d9b9bbc9cfaa59.jpeg)
一般情况下,遍历目的只是取出每一个元素值,见代码第一个for循环,但有时需要在遍历的过程中同时获取索引,可以使用第二个for循环,其中enumerate(a)函数可以获取元组对象,该元组对象有两个元素,第一个元素索引,第二个是元素的值。
二.列表
列表(list)也是一种序列结构,与元组不同,列表具有可变性,可以追加、插入、删除和替换列表中的元素。
1.创建列表
![a8f70733b0dcb4399e009ea12611ac7c.png](https://i-blog.csdnimg.cn/blog_migrate/f9eff1124b3bd24533779f0fc346d185.jpeg)
创建列表时[]不能省略,否则就变成元组了。创建空列表是[ ],列表中可以放入任何对象。还可以通过list([iterable])创建,('Hello','XiaoKai',1,2,3,4,5)是一个元组,元组是可迭代对象,可以作为list()函数参加创建列表对象。
2.追加元素
列表中追加元素的方法可以使用append()方法,如果想追加另一个列表,可以使用+运算符或者extend()方法。
list.append(x) #x参数是要追加的单个元素list.extend(t) #t参数是要追加的另外一个列表
![482d099299430683029cc4887d8c0cd9.png](https://i-blog.csdnimg.cn/blog_migrate/6702659bae103410e7e15fab27230312.jpeg)
3.插入元素
插入元素可以用insert()方法,该方法可以在指定索引位置插入一个元素。
insert(i,x)
参数i是索引,参数x是要插入的元素
![c2b0f44efdf256001fcf234f4e80818d.png](https://i-blog.csdnimg.cn/blog_migrate/1bb37e10aabbaa6a0385355225199157.jpeg)
4.替换元素
通过列表下标将索引元素放在赋值符号“=”左边,进行替换。
![9930080196981d326a9627deaaaca063.png](https://i-blog.csdnimg.cn/blog_migrate/65a21ec65c97b18c8a473047b435c444.jpeg)
5.删除元素
remove()方法和pop()方法
(1)remove()方法
从左到右查找列表中的元素,如果找到匹配元素则删除,如果找到多个匹配元素,那么只删除第一个,如果没有找到,则抛出错误
list.remove()
![26cea2d567374bf861f89a32b2ad1659.png](https://i-blog.csdnimg.cn/blog_migrate/43fa3606948f33b3fb57e0bf0eef7149.jpeg)
(2)pop()方法
它会将删除的元素返回
list.pop([i]) 参数i是指定删除元素的索引,可以省略,表示删除最后一个元素
![06bb5f0df31e6db7f608d39602f6c411.png](https://i-blog.csdnimg.cn/blog_migrate/d97e5ece538cc0e8121faf1c9a88c022.jpeg)
6.其他常用方法
- reverse():倒置列表
- copy():复制列表
- clear():清除列表中的所有元素
- index(x[,i[,j]]):返回查找x第一个出现的索引,i是开始查找索引,j是结束查找索引,该方法继承自序列,元组和字符串也可以使用这个方法
- count(x):返回x出现的次数,同样继承自序列,元组和字符串可以使用这个方法
![253983072f88a32d50e6f43c861d5d64.png](https://i-blog.csdnimg.cn/blog_migrate/efac9767284ebb6f63c8d91737845c03.jpeg)
7.列表推导式
他可以将一种数据结构作为输入,经过过滤、计算等处理,最后输出另一种数据结构。
- 列表推导式
- 集合推导式
- 字典推导式
先说列表推导式
如果想得到0~9中偶数的平方数列,可以通过for循环实现
![7852b8ad2a37d7a4a7a1750d666565eb.png](https://i-blog.csdnimg.cn/blog_migrate/ca0a35a5b20d2757c473e4344cc459ba.jpeg)
也可以通过列表推导式实现
![06820de5a9f2507508266b498794f9c8.png](https://i-blog.csdnimg.cn/blog_migrate/dac5896a8c6ad1065edd53ad79f9b91a.jpeg)
![f977d8c7b177924c6b4ceba75d5a2c37.png](https://i-blog.csdnimg.cn/blog_migrate/483f61d87dd921f8632b98f5d1e9b9a1.jpeg)
谢谢大家,下一篇分享数据结构——集合、字典
![1c4bc4d930245933ada1967756565c73.png](https://i-blog.csdnimg.cn/blog_migrate/6769677f10afe67724a47f4c121701e4.jpeg)