列表、元组和字典

列表、元组和字典

1. 通用序列操作

Pyhton中有六种内置序列:列表、元组、字符串、Unicode字符串、buffer对象和xrange对象,其中列表、元组和字符串这三种序列是最常见的。

Python中的大部分序列都可以进行通用操作,包括索引、切片、序列相加(连接)、序列重复(乘法)、成员资格、长度、最大值和最小值。

1.1 索引

索引是按一定次序所做的标记,通过这个标记可以很快的查找和获取目标元素,像列表、元组等序列的索引就是数字编号。

Python中的序列给每个元素都分配了一个数字编号,代表了它在序列中的索引位置。Python中的索引从 “0” 开始计数,索引不仅可以从左往右编号,Python中的序列还支持从右往左编号,序列中最右边的元素索引为 “-1” 。

索引取值的语法格式:变量名[num]

索引取值的结果就是元素值,不带 “[]” 、 “()” 等符号。

索引取值

在这里插入图片描述

执行结果如下:

在这里插入图片描述

1.2 切片

切片就是取一段区间内的值,Python中所有的序列类型都可以进行切片操作。

切片操作的实现需要提供两个索引作为边界,第一个索引的元素包含在切片内,第二个索引的元素不包含在切片内,类似于数学上的 “左闭右开” 区间。

切片取值的语法格式:变量名[a:b] # a包含在切片内,b不包含在切片内

切片取值,如果序列为列表,则结果带 “[]” ;如果取单值,则结果为[num];如果序列为元组,则结果带 “()” ;如果取单值,则结果为(num, )

切片也支持负数取值,如果切片中a、b的值对应到序列中,发现a的值在b的右边,则结果显示为 “[]” 或 “()” 等空符号。

序列的索引下标可以超出其真实的索引长度,切片[a:b]中,a的默认值是0,b的默认值是序列的最后一个元素;[:b],获取索引从0到b-1的元素;[a:],获取索引从a到最后一个的元素

如果切片的两个索引都设置为空,即表示成[:],可以获取整个序列。

切片不仅可以表示成[a:b]的形式,Python中切片还提供了第三个参数,即步长,可以表示为[a:b:c], 默认情况下步长为1。注意:步长参数不能为0

步长不仅可以是正数,还可以是负数,当步长为负数时,结果从a的值开始向左获取元素。

步长为正数时,开始点必须小于结束点;步长为负数时,开始点必须大于结束点。否则输出结果为 “[]” 、 “()” 等空符号。

切片的基本操作

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

执行结果如下:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1.3 序列相加(连接)

序列之间可以使用 “+” 进行连接操作。

列表和列表连接的结果仍是列表,元组和元组连接的结果仍是元组,字符串和字符串连接的结果仍是字符串。注意:不同类型的序列是不能做连接的

序列相加

在这里插入图片描述

执行结果如下:

在这里插入图片描述

1.4 序列重复(乘法)

Python中,序列不仅可以做 “加法” ,还可以使用 “*” 做乘法。

序列重复

在这里插入图片描述

执行结果如下:

在这里插入图片描述

1.5 成员资格

成员资格是用来判断一个元素是否存在于序列中,Python中用运算符 “in” 来判断。 “in” 运算符会判断左边的元素是否存在于右边的序列中,如果存在就返回True,如果不存在则返回False。

要注意的是,只有当元素的类型和值都完全一致时,才算是存在于序列中,比如数字 “5” 和字符串 ”5“ 就是两种不同类型的元素。

如果判断元素是否存在于字符串序列中,则所参与运算的元素必须是字符串,否则会报错;换句话说, ”in“ 操作符的右边是字符串,那么左边也必须是字符串。

成员资格

在这里插入图片描述

执行结果如下:

在这里插入图片描述

1.6 长度、最大值、最小值和求和

Python中,可以用len()函数获取序列的长度,用max()函数获取序列的最大值,用min()函数获取序列的最小值,用sum()函数对序列求和。注意:由于字符串序列的元素都是字符串,所以sum()函数无法对字符串序列求和

长度、最大值、最小值和求和

在这里插入图片描述

执行结果如下:

在这里插入图片描述

2. 列表

2.1 增加元素

列表想要添加新元素,可以使用append()方法、insert()方法、extend()方法。append()和extend()两种方法都是在列表的最后增加元素。insert()方法需要传递两个参数,第一个参数是要插入的新元素的索引,第二个参数是要插入的元素值。insert()和append()一样,一次只能新增一个元素。

格式:

列表名.append(元素值) # 在列表的末尾增加单个元素值

列表名.insert(num, 元素值) # 在指定索引位置插入单个元素值

列表名.extend(其它列表名) # 在列表末尾增加其它列表的完整内容

列表名.extend([元素值1, 元素值2, …,]) # 在列表末尾增加多个元素值

增加元素

在这里插入图片描述

执行结果如下:

在这里插入图片描述

2.2 删除元素

Python提供了好几种对列表删除元素的方法。比如pop(),remove(),clear()。pop()方法可以有返回值;remove()方法会删除查找到的第一个元素,并且没有返回值。

不但可以使用列表自带的方法对列表元素进行删除,也可以使用关键字 ”del“ 来删除列表元素, ”del“ 关键字本质上是把变量从内存中删除。日常开发中,建议使用列表提供的方法删除数据。

格式:

列表名.pop() # 把列表的最后一个元素值删除

列表名.pop(num) # 把指定索引位置的元素值删除

列表名.remove(元素值) # 从列表中删除已存在的元素值

列表名.clear() # 清空列表,把列表中的所有内容删除

del 列表名[num] # 把指定索引位置的元素值删除(从内存中删除)

del 列表名 # 删除整个列表

删除元素

在这里插入图片描述

执行结果如下:

在这里插入图片描述

2.3 修改元素

列表可以通过索引获取单个元素,也可以通过索引修改其中的元素,使用方法就和变量赋值一样方便。

一个列表可以存储不同类型的数据,因此修改的新元素值也不需要跟原来的元素类型一样。注意:要修改元素的索引必须是已存在的索引,不能对超出列表长度的索引进行元素修改,否则会报错

格式:

列表名[num] = 元素值 # 修改元素值

修改元素

在这里插入图片描述

执行结果如下:

在这里插入图片描述

2.4 查找元素

查找元素在列表中的索引位置,可以用index()方法。但是要注意,如果元素不在列表中,就会报错。

格式:

列表名.index(元素值) # 根据出现的第一个元素值查找索引编号

查找元素

在这里插入图片描述

执行结果如下:

在这里插入图片描述

2.5 列表的其它操作

reverse()方法可以反转列表内容,和 ”[::-1]“ 类似;count()方法用于统计某个元素在列表中出现的次数;sort()方法用来对列表排序。

格式:

列表名.reverse() # 将列表的内容反转

列表名.count(元素值) # 统计该元素值在列表中出现的次数

列表名.sort() # 列表内容(字母、数字都行)按升序排列

列表名.sort(reverse=True) # 列表内容按降序排列

for 变量名 in 列表名: print() # 遍历列表的元素值

列表的其它操作

在这里插入图片描述

执行结果如下:

在这里插入图片描述

3. 元组

元组与列表相似,但是元组与列表最大的区别是,列表可以增加、删除、修改元素,而元组一旦创建就不能增加、删除、修改元素,只能删除整个元组。删除格式为:del 元组名

创建元组时,如果元组中只有一个元素,则这个元素后面必须要有 ”,” ,否则就不是元组。

元组可以通过index()方法查找元素在元组中的索引位置,因为元组不能修改,所以元组的查找速度要比列表更快;可以用count()方法统计元素出现的次数。

格式:

元组名.index(元素值) # 根据出现的第一个元素值查找索引编号

元组名.count(元素值) # 统计该元素值在元组中出现的次数

元组的基本操作

在这里插入图片描述

执行结果如下:

在这里插入图片描述

4.字典

4.1 定义字典

字典类型就和它的名字一样,可以像查字典一样去查找。字典用键值对存储数据,键值对之间用逗号隔开,键和值之间用冒号隔开,左边的称为键,右边的称为值,冒号右边空一格,键必须是唯一的。

格式:

字典名 = {key1: value1, key2: value2, …}

定义字典

在这里插入图片描述

执行结果如下:

在这里插入图片描述

4.2 增加键值对

要增加新的键值对,那么增加的键在原来的字典中必须是不存在的,否则就不是增加键值对了。

可以用update()方法合并字典,如果被合并的字典中包含已经存在的键值对,则会覆盖原有的键值对;也可以用update()方法同时增加多个键值对。

格式:

字典名[key] = value # 增加新的键值对,key必须不存在于原来的字典中

字典名.update(其它字典名) # 合并字典

字典名.update({key1: value1, key2: value2, …}) # 增加多个键值对

增加键值对

在这里插入图片描述

执行结果如下:

在这里插入图片描述

4.3 删除键值对

格式:

字典名.pop(key) # 删除键值对

字典名.clear() # 清空字典,删除字典中的所有内容

del 字典名[key] # 删除键值对

del 字典名 # 删除整个字典

删除键值对

在这里插入图片描述

执行结果如下:

在这里插入图片描述

4.4 修改键值对

要修改键值对,那么修改的键在原来的字典中必须是存在的。可以用update()方法同时修改多个键值对。

格式:

字典名[key] = value # 修改键值对,key必须存在于原来的字典中

字典名.update({key1: value1, key2: value2, …}) # 修改多个键值对

修改键值对

在这里插入图片描述

执行结果如下:

在这里插入图片描述

4.5 字典的其它操作

在开发中,字典更多的应用场景是:将多个字典放在一个列表中,再进行遍历,在循环体内部针对每一个字典进行相同的处理。

字典和列表一样,如果只是利用赋值复制一个字典的话,那么无论原字典还是赋值复制的字典修改,都会让另一个字典做出相同的改变;如果利用copy()方法则能生成一个新的独立的字典,做出如何改变都不会影响原字典的内容。注意:copy进行的拷贝是浅拷贝,如果字典的元素值也是字典,那么copy只会影响最外层字典,元素内部还是赋值引用

fromkeys()方法用于创建一个新字典,用序列(列表、元组等)中的元素作为字典的key,第二个参数为字典的所有key对应的value。

使用get()方法可以获取键对应的值,如果键不存在,则返回默认值None。

使用keys()方法返回一个列表,里面包含了字典的所有键;keys()方法常常用来判断一个键是否存在于字典中,可以与 “in” 操作符组合使用。

使用values()方法返回一个列表,里面包含了字典的所有值;也可以判断一个值是否存在于字典中,可以与 “in” 操作符组合使用。

使用items()方法返回一个列表,里面包含了字典的所有键和所有值。

格式:

列表名 = [{}, {}, …] for 变量名 in 列表名: print() # 遍历列表中的字典

字典名.copy() # 复制一个新的独立的字典

dict.fromkeys(序列名) # 创建新字典,字典的key为序列中的元素,value为None

dict.fromkeys(序列名, value) # 创建新字典,字典的key为序列中的元素,key对应的值为value

字典名.get(key) # 获取键对应的值,键不存在则返回默认值None

字典名.keys() # 返回一个列表,里面包含了字典的所有键

key in 字典名.keys() # 判断键是否存在于字典中,返回True或False

字典名.values() # 返回一个列表,里面包含了字典的所有值

value in 字典名.values() # 判断值是否存在于字典中,返回True或False

字典名.items() # 返回一个列表,里面包含了字典的所有键和所有值

遍历列表中的字典

在这里插入图片描述

执行结果如下:

在这里插入图片描述

字典的复制操作

在这里插入图片描述

执行结果如下:

在这里插入图片描述

fromkeys方法

在这里插入图片描述

执行结果如下:

在这里插入图片描述

get方法

在这里插入图片描述

执行结果如下:

在这里插入图片描述

keys、values、items方法

在这里插入图片描述

执行结果如下:

在这里插入图片描述

5. 知识拓展–集合

Python中有一种内置类型叫做集合,它是一个非常有用的数据结构。它与列表的行为类似,主要的区别在于集合不包含重复的值,当存在重复值时,集合会自动去重。

定义空集合时,必须使用set()定义,而不能简单的用{};定义非空集合时,可以直接使用花括号 “{}” 定义,也可以使用set(列表名)来定义

在集合中添加新元素可以用add()方法。如果新的元素与原来的元素没有重复,则正常添加元素;如果重复,则不会添加,保证集合元素的唯一性。

在集合中删除元素可以用remove()方法。

Python自带的集合类型支持很多数学意义上的集合操作。

格式:

集合名 = set() # 定义空集合

集合名 = {元素值1, 元素值2, …} # 定义非空集合

列表名 = [元素值1, 元素值2, …] 变量名 = set(列表名) # 定义非空集合

集合名.add(元素值) # 在集合中增加元素

集合名.remove(元素值) # 在集合中删除元素

集合A & 集合B # 交集

集合A | 集合B # 并集

集合A — 集合B # 差集

集合A ^ 集合B # 对称差集

定义空集合

在这里插入图片描述

执行结果如下:

在这里插入图片描述

定义非空集合

在这里插入图片描述

执行结果如下:

在这里插入图片描述

增加与删除元素

在这里插入图片描述

执行结果如下:

在这里插入图片描述

数学意义上的集合操作

在这里插入图片描述

执行结果如下:

在这里插入图片描述

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值