5. 列表、元组和集合
文章目录
-
5. 列表、元组和集合
-
- 1. 序列类型
- 2. 序列类型:列表
-
- 2.1 用下标取得列表中的单个值
- 2.2 负数下标
- 2.3 利用切片取得子列表
- 2.4 用len()取得列表的长度
- 2.5 用下标和切片改变列表中的值
- 2.6 列表连接和列表复制
- 2.7 用del 语句从列表中删除值
- 2.8 用list()函数产生列表
- 2.9 列表用于循环
- 2.10 in 和not in 操作符
- 2.11 多重赋值技巧
- 2.12 用index()方法在列表中查找值
- 2.13 用append()和insert()方法在列表中添加值
- 2.14 使用extend()或+=合并列表
- 2.15 用remove()方法从列表中删除值
- 2.16 用sort()方法将列表中的值排序
- 2.17 使用count()记录特定值出现的次数
- 2.18 基本统计值计算
- 3. 元组
- 4. 集合
1. 序列类型
计算机不仅对单个变量表示的数据进行处理,更多情况,计算机需要对一组数据进行批量处理。一些例子包括:
- 处理计算机中一组文件;
- 统计一组问卷调查结果;
- 给定一组工资基本信息,计算应纳个人所得税;
- 给定一个学院学生信息,统计一下男女生比例;
- 一次实验产生了很多组数据,对这些大量数据进行分析;
序列类型是组合数据类型的一类,能够将多个同类型或不同类型的数据组织起来,通过单一的表示使数据操作更有序更容易。
序列类型是一个元素向量,元素之间存在先后关系,通过序号访问,元素之间不排他。
由于元素之间存在顺序关系,所以序列中可以存在相同数值但位置不同的元素。序列类型支持成员关系操作符(in)、长度计算函数(len())、分片([]),元素本身也可以是序列类型。
Python中的主要序列类型:
- str(字符串):由字符构成的序列;
- list(列表):一个可以修改数据项的序列类型,使用也最灵活;
- tuple(元组):包含0个或多个数据项的不可变序列类型。元组生成后是固定的,其中任何数据项不能替换或删除。
序列类型有12个通用的操作符和函数:
操作符 | 描述 |
---|---|
x in s | 如果x是s的元素,返回True,否则返回False |
x not in s | 如果x不是s的元素,返回True,否则返回False |
s + t | 连接s和t |
s * n 或 n * s | 将序列s复制n次 |
s[i] | 索引,返回序列的第i个元素 |
s[i: j] | 分片,返回包含序列s第i到j个元素的子序列(不包含第j个元素) |
s[i: j: k] | 步骤分片,返回包含序列s第i到j个元素以k为步数的子序列 |
len(s) | 序列s的元素个数(长度) |
min(s) | 序列s中的最小元素 |
max(s) | 序列s中的最大元素 |
s.index(x[, i[, j]]) | 序列s中从i开始到j位置中第一次出现元素x的位置 |
s.count(x) | 序列s中出现x的总次数 |
2. 序列类型:列表
- “列表”是一个值,它包含多个值构成的序列。
- 术语“列表值”指的是列表本身(它作为一个值,可以保存在变量中,或传递给函数,像所有其他值一样),而不是指列表值之内的那些值。
列表值看起来像这样:[‘西南财经大学’, ‘电子科技大学’, ‘四川大学’, ‘西南交通大学’]。就像字符串值用引号来标记字符串的起止一样,列表用左方括号开始,右方括号结束,即[ ]。列表中的值也称为“表项”。表项用逗号分隔(就是说,它们是“逗号分隔的”)。- - 列表的长度和内容都是可变的,可自由对列表中数据项进行增加、删除或替换。列表没有长度限制,元素类型可以不同,使用非常灵活。
- 由于列表属于序列类型,所以列表也支持成员关系操作符(in)、长度计算函数(len())、分片([])。
- 列表可以同时使用正向递增序号和反向递减序号,可以采用标准的比较操作符(<、<=、==、!=、>=、>)进行比较,列表的比较实际上是单个数据项的逐个比较。
列表的操作
函数或方法 | 描述 |
---|---|
ls[i] = x | 替换列表ls第i数据项为x |
ls[i: j] = lt | 用列表lt替换列表ls中第 i 到 j 项数据(不含第 j 项,下同) |
ls[i: j: k] = lt | 用列表lt替换列表ls中第i到j以k为步的数据 |
del ls[i: j] | 删除列表ls第i到j项数据,等价于ls[i: j]=[] |
del ls[i: j: k] | 删除列表ls第i到j以k为步的数据 |
ls += lt或ls.extend(lt) | 将列表lt元素增加到列表ls中 |
ls *= n | 更新列表ls,其元素重复n次 |
ls.append(x) | 在列表ls最后增加一个元素x |
ls.clear() | 删除ls中所有元素 |
ls.copy() | 生成一个新列表,复制ls中所有元素 |
ls.insert(i, x) | 在列表ls第i位置增加元素x |
ls.pop(i) | 将列表ls中第i项元素取出并删除该元素 |
ls.remove(x) | 将列表中出现的第一个元素x删除 |
ls.reverse(x) | 列表ls中元素反转 |
2.1 用下标取得列表中的单个值
列表用中括号([])表示,通过下标取单个值,下标只能是整数,不能是浮点值。下标就是元素在列表中的偏移量。
LIST=["苹果","香蕉","梨子"]
LIST
LIST[1]
LIST[1][0]
['苹果', '香蕉', '梨子']
'香蕉'
'香'
如果使用的下标超出了列表中值的个数,Python 将给出IndexError 出错信息。
# 编号,姓名,基本工资,奖金,住房补助,五险一金,其他扣款,专项附加扣除
incomeList = [
['10932','张珊',15000.00 ,4000.00 ,2300.00 ,980.00 ,300.00 ,1000.00],
['10933','李思',12000.00 ,5000.00 ,2600.00 ,890.00 ,400.00 ,2000.00],
['10934','王武',10100.00 ,2000.00 ,2500.00 ,860.00 ,500.00 ,1500.00],
['10935','赵柳',10050.00 ,1000.00 ,2700.00 ,1080.00 ,300.00 ,2000.00],
['10936','钱棋',10200.00 ,2000.00 ,2400.00 ,1000.00 ,600.00 ,1000.00],
['10941','张明',13600.00 ,4000.00 ,2100.00 ,680.00 ,300.00 ,1000.00],
['10942','赵敏',13200.00 ,2500.00 ,2300.00 ,670.00 ,400.00 ,3000.00],
['10945','王红',13600.00 ,2600.00 ,2030.00 ,560.00 ,400.00 ,2000.00],
['10946','李萧',12500.00 ,2800.00 ,2400.00 ,420.00 ,500.00 ,1500.00],
['10947','孙科',12000.00 ,3500.00 ,2030.00 ,880.00 ,300.00 ,1000.00],
['10948','刘利',14200.00 ,2500.00 ,2020.00 ,900.00 ,400.00 ,2000.00]
]
[['10932', '张珊', 15000.0, 4000.0, 2300.0, 980.0, 300.0, 1000.0],
['10933', '李思', 12000.0, 5000.0, 2600.0, 890.0, 400.0, 2000.0],
['10934', '王武', 10100.0, 2000.0, 2500.0, 860.0, 500.0, 1500.0],
['10935', '赵柳', 10050.0, 1000.0, 2700.0, 1080.0, 300.0, 2000.0],
['10936', '钱棋', 10200.0, 2000.0, 2400.0,