欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

列表、元组和字典

程序员文章站 2022-03-08 08:08:25
列表、元组和字典1. 通用序列操作Pyhton中有六种内置序列:列表、元组、字符串、Unicode字符串、buffer对象和xrange对象,其中列表、元组和字符串这三种序列是最常见的。Python中的大部分序列都可以进行通用操作,包括索引、切片、序列相加(连接)、序列重复(乘法)、成员资格、长度、最大值和最小值。1.1 索引索引是按一定次序所做的标记,通过这个标记可以很快的查找和获取目标元素,像列表、元组等序列的索引就是数字编号。Python中的序列给每个元素都分配了一个数字编号,代表了它在序...

列表、元组和字典

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 # 对称差集

定义空集合

列表、元组和字典

执行结果如下:

列表、元组和字典

定义非空集合

列表、元组和字典

执行结果如下:

列表、元组和字典

增加与删除元素

列表、元组和字典

执行结果如下:

列表、元组和字典

数学意义上的集合操作

列表、元组和字典

执行结果如下:

列表、元组和字典

本文地址:https://blog.csdn.net/weixin_48158964/article/details/111059689