Python-5.列表与元组
砂糖桑
Aug 12, 2022
Last edited: 2022-8-14
type
Post
status
Published
date
Aug 12, 2022
slug
python-5
summary
Python中的字符串、列表、元组均属于序列类型。对于序列类型,它们有很多共同的操作,且很多都在字符串那篇学习了。本篇先简单回顾序列共同的操作,然后重点学习列表独有的操作,以及列表与元组的对比。
tags
Python课堂笔记合集
category
Python
icon
password
Property
Aug 14, 2022 11:17 AM
Python中的字符串、列表、元组均属于序列类型。对于序列类型,它们有很多共同的操作,且很多都在字符串那篇学习了。本篇先简单回顾序列共同的操作,然后重点学习列表独有的操作,以及列表与元组的对比。
Python的序列类型是指元素按照位置编号顺序存储的一类数据类型,包括字符串、列表与元组。列表和元组可以存储不同的数据类型,其中列表的元素可以修改;而元组和字符串一样,其中的元素是不能修改的。
序列通用操作
字符串、列表、元组共有的操作。这些操作不会改变序列本身的元素,而是返回一个序列。
索引与分片
索引包括正索引和负索引;分片可以使用正索引和负索引且可以指定步长。在字符串那里详细学习了。
序列的计算
可以对序列进行+或*的操作。需要注意两个序列必须是同一类型,元组和列表也不能!
- 序列相加:将两个序列拼接起来。
- 序列乘法:序列重复n次。如果n<1则返回一个空序列。
- 序列比较:从左到右开始比,直到比出大小。
- 成员测试:in或not in测试前者是否是后面序列的元素。
序列处理函数
len(seq):获取序列的长度
max(seq):获取序列中最大的元素
min(seq):获取序列中最小的元素
sum(seq):计算序列中所有元素的和,要求所有元素都是数值。
zip(seq):接收任意多个序列作为参数,将各序列对应位置的元素合并成一个元组,最后返回一个迭代器。- 要合并的多个序列如果长度不等,则以长度最短的为准。
- 使用
zip(*seq)可以将zip对象解压还原,得到的还是一个迭代器,所以需要转化为list。

sorted(seq,reverse=False):将序列中的元素排序后返回一个新的序列。reverse为False时表示升序,True时为降序,默认是升序。
reversed(seq):将seq中的元素按原来顺序的逆序排列,以迭代器的形式返回。
序列拆分赋值
可以将一个序列的值依次赋值给一系列变量:

为了避免这个错误,中间可以有一个元素使用*,表示将序列中间的元素组成一个列表赋值给它:

实际上,这种拆分赋值方式更常用于函数的可变长度传参。
列表的专有操作
列表解析
列表解析是平时构造列表的一个比较常用的方式。它的格式为[表达式 for语句]。表达式对for中的循环变量进行计算,计算的结果作为列表的一个元素。
seq=[i**2 for i in range[5]] # 获得酷狗音乐TOP500的网页url,组成一个列表 urls=['https://www.kugou.com/yy/rank/home/{}-8888.html'.format(str(i)) for i in range(1,24)]
元素修改
列表与字符串、元组不同点就是它的元素可以修改。
- 元素赋值
- 元素删除:使用del语句可以将某个位置的元素从列表中移除,也可以删除整个序列(包括字符串和元组)。

- 分片赋值:将列表的子序列赋值为另一个子序列。可以使用分片赋值的方式来删除列表的一个子序列。
列表的常用方法
通用的进行序列处理的大多都是函数,列表这里独有的一般都是方法。
按值查找
按值查找对于字符串和元组也是通用的。主要是两个方法:
s.count(x):查找值x在s中出现的次数。如果x不是s中的元素结果为0。
s.index(x):查找值x在s中第一次出现的下标。如果x不是s中的元素会报错!
元素增删
s.append(x):向s的末尾插入元素x
s.extend(s1):向s的末尾插入序列s1
s.pop(i):删除并返回列表下标为i的元素,i缺省则默认为列表的最后一个元素;如果i超出了列表的索引范围会报错!
pop和del的区别是删除后是否会返回这个值。这个特性是很好的,C++的pop就没有返回,还要自己先暂存要pop的值,有点繁琐。
s.insert(i,x):在列表下标为i的位置插入元素x。如果i超出了索引范围则插入到开头(负索引)或最后(正索引)。

s.remove(x):从列表中删除从左到右第一个值为x的元素。和pop和del不同的是remove按值删除。
元素排序
列表的sort方法与reverse方法可以实现和sorted函数与reversed函数相同的效果,区别是前者直接修改列表本身。
s.sort(reverse=False):默认升序,True为降序。
s.reverse():将s逆序。

列表与元组比较
- 列表元素包括在中括号[]中,而元组的元素包括在小括号()中。
- 元组是不可变类型的序列,所以它更安全;列表是可变类型序列,处理更加灵活。
- 元组可以作为字典的键来使用,而列表不能。
- 使用list()和tuple()可以轻松实现列表和元组的转换。
- Catalog
- About
0%