python 序列

前言

(1)python序列是指按特定顺序依次排列的一组数据,它们可以占用一块连续的内存,也可以分散到多块内存中。python中的序列类型包括列表(list)、元组(tuple)、字典(dict)和集合(set)。
(2)列表和元组比较类似,它们都按顺序保存元素,所有的元素占用一块连续的内存,每个元素都有自己的索引,因此列表和元组的元素都可以通过索引来访问。它们的区别在于:列表是可以修改的,而元组是不可修改的。
(3)字典和集合存储的元素都是无序的,每个元素占用不同的内存,其中字典以key-value的方式保存。
(4)序列索引值为正,索引从左向右计数,索引值从0开始。索引值为负,索引从右向左计数,索引值从-1开始。

列表

python中没有数组,而是加入了更为强大的列表。
1.列表的特点
(1)从形式上看,列表会将所有元素都放在一对中括号[ ]里面,相邻元素之间用逗号,分隔。
(2)从内容上看,列表可以存储整数、小数、字符串、列表、元组等任何类型的数据,并且同一个列表中元素的类型也可以不同。
在这里插入图片描述
2.创建列表
(1)使用[]直接创建列表
使用[ ]创建列表后,一般使用=将它赋值给某个变量。
在这里插入图片描述
另外,使用此方式创建列表时,列表中元素可以有多个,也可以一个都没有。
在这里插入图片描述
(2)使用list函数创建列表
除了使用[ ]创建列表外,python 还提供了一个内置的函数 list(),使用它可以将其它数据类型转换为列表类型。
在这里插入图片描述
在这里插入图片描述
3.访问列表元素
列表是 python 序列的一种,我们可以使用索引(Index)访问列表中的某个元素(得到的是一个元素的值),也可以使用切片访问列表中的一组元素(得到的是一个新的子列表)。
(1)使用索引访问
listname[i]:listname表示列表名字,i是索引。
在这里插入图片描述
(2)使用切片访问
listname[start: end :step]:start是起始索引,end是结束索引,step表示步长。注意切片的结果不包括结束索引,step为正时从左向右取值,为负时从右向左取值。
在这里插入图片描述
4.删除列表
对于已经创建的列表,如果不再使用,可以使用del关键字将其删除。但实际开发中并不经常使用 del 来删除列表,因为 python 自带的垃圾回收机制会自动销毁无用的列表,即使开发者不手动删除,python 也会自动将其回收。
在这里插入图片描述
5.向列表添加元素
(1)append() 方法用于在列表的末尾追加元素
在这里插入图片描述
(2)使用extend()方法,extend() 不会把列表或者元祖视为一个整体,而是把它们包含的元素逐个添加到列表中。
在这里插入图片描述
(3)insert()方法插入元素,append() 和 extend() 方法只能在列表末尾插入元素,如果希望在列表中间某个位置插入元素,那么可以使用 insert() 方法。
在这里插入图片描述
6.删除列表元素
(1)del 根据索引值删除元素
del 可以删除列表中的单个元素,格式为:del listname[index]
其中,listname 表示列表名称,index 表示元素的索引值。
del 也可以删除中间一段连续的元素,格式为:del listname[start : end] 其中,start 表示起始索引,end 表示结束索引。del 会删除从索引 start 到 end 之间的元素,不包括 end 位置的元素。
在这里插入图片描述
(2)pop() 根据索引值删除元素
pop() 方法用来删除列表中指定索引处的元素,具体格式如下:
listname.pop(index) 其中,listname 表示列表名称,index 表示索引值。如果不写 index 参数,默认会删除列表中的最后一个元素,类似于数据结构中的“出栈”操作。
在这里插入图片描述
(3)remove() 根据元素值进行删除
remove() 方法会根据元素本身的值来进行删除操作。需要注意的是,remove() 方法只会删除第一个和指定值相同的元素,而且必须保证该元素是存在的,否则会引发 ValueError 错误。
在这里插入图片描述
(4)clear() 删除列表所有元素
clear() 用来删除列表的所有元素,也即清空列表。
在这里插入图片描述
7.修改列表元素
(1)修改单个元素
修改单个元素非常简单,直接对元素赋值即可。
在这里插入图片描述
(2)修改一组元素
python 支持通过切片语法给一组元素赋值。在进行这种操作时,如果不指定步长(step 参数),python 就不要求新赋值的元素个数与原来的元素个数相同。这意味,该操作既可以为列表添加元素,也可以为列表删除元素。
在这里插入图片描述
使用切片语法赋值时,Python 不支持单个值。
在这里插入图片描述
但是如果使用字符串赋值,python 会自动把字符串转换成序列,其中的每个字符都是一个元素。
在这里插入图片描述
使用切片语法时也可以指定步长(step 参数),但这个时候就要求所赋值的新元素的个数与原有元素的个数相同。
在这里插入图片描述
8.查找元素
(1)index() 方法
index() 方法用来查找某个元素在列表中出现的位置(也就是索引),如果该元素不存在,则会导致 ValueError 错误,所以在查找之前最好使用 count() 方法判断一下。
index() 的语法格式为:listname.index(obj, start, end) 其中,listname 表示列表名称,obj 表示要查找的元素,start 表示起始位置,end 表示结束位置。
start 和 end 参数用来指定检索范围:start 和 end 可以都不写,此时会检索整个列表;如果只写 start 不写 end,那么表示检索从 start 到末尾的元素;如果 start 和 end 都写,那么表示检索 start 和 end 之间的元素。
在这里插入图片描述
(2)count()方法
count() 方法用来统计某个元素在列表中出现的次数,基本语法格式为:listname.count(obj) 其中,listname 代表列表名,obj 表示要统计的元素。如果 count() 返回 0,就表示列表中不存在该元素,所以 count() 也可以用来判断列表中的某个元素是否存在。
在这里插入图片描述

元组

元组和列表的不同之处在于:
列表的元素是可以更改的,包括修改元素值,删除和插入元素,所以列表是可变序列;
而元组一旦被创建,它的元素就不可更改了,所以元组是不可变序列。元组也可以看做是不可变的列表,通常情况下,元组用于保存无需修改的内容。
1.元组的特点
(1)从形式上看,元组的所有元素都放在一对小括号( )中,相邻元素之间用逗号,分隔,如下所示:(element1, element2, … ,elementn) 其中 element1~elementn 表示元组中的各个元素,个数没有限制,只要是 Python 支持的数据类型就可以。
(2)从存储内容上看,元组可以存储整数、实数、字符串、列表、元组等任何类型的数据,并且在同一个元组中,元素的类型可以不同。
2.创建元组
(1) 使用 ( ) 直接创建
通过( )创建元组后,一般使用=将它赋值给某个变量。
在这里插入图片描述
在 python 中,元组通常都是使用一对小括号将所有元素包围起来的,但小括号不是必须的,只要将各元素用逗号隔开,python 就会将其视为元组。需要注意的一点是,当创建的元组中只有一个字符串类型的元素时,该元素后面必须要加一个逗号, ,否则 Python 解释器会将它视为字符串。
在这里插入图片描述
(2)使用tuple()函数创建元组
除了使用( )创建元组外,python 还提供了一个内置的函数 tuple(),用来将其它数据类型转换为元组类型。
在这里插入图片描述
在这里插入图片描述
3.访问元组元素
和列表一样,我们可以使用索引访问元组中的某个元素(得到的是一个元素的值),也可以使用切片访问元组中的一组元素(得到的是一个新的子元组)。
(1)使用索引访问元组元素的格式为:tuplename[i] 其中tuplename 表示元组名字,i 表示索引值。元组的索引可以是正数,也可以是负数。
在这里插入图片描述
(2)使用切片访问元组元素的格式为:tuplename[start : end : step] 其中,start 表示起始索引,end 表示结束索引,step 表示步长。
在这里插入图片描述
4.修改元组
前面我们已经说过,元组是不可变序列,元组中的元素不能被修改,所以我们只能创建一个新的元组去替代旧的元组。
在这里插入图片描述
另外,还可以通过连接多个元组(使用+可以拼接元组)的方式向元组中添加新元素。
在这里插入图片描述
5.删除元组
当创建的元组不再使用时,可以通过 del 关键字将其删除。
在这里插入图片描述

字典

python 字典(dict)是一种无序的、可变的序列,它的元素以“键值对”(key-value)的形式存储。字典类型是 python 中唯一的映射类型。“映射”是数学中的术语,简单理解,它指的是元素之间相互对应的关系,即通过一个元素,可以唯一找到另一个元素。
在这里插入图片描述
1.字典的特点
在这里插入图片描述
2.创建字典
(1) 使用 { } 创建字典
由于字典中每个元素都包含两部分,分别是键(key)和值(value),因此在创建字典时,键和值之间使用冒号:分隔,相邻元素之间使用逗号,分隔,所有元素放在大括号{ }中。
在这里插入图片描述
在这里插入图片描述
(2)通过 fromkeys() 方法创建字典
python 中,还可以使用 dict 字典类型提供的 fromkeys() 方法创建带有默认值的字典,具体格式为:
dictname = dict.fromkeys(list,value=None) 其中,list 参数表示字典中所有键的列表。value 参数表示默认值,如果不写,则为空值 None。
在这里插入图片描述
(3)通过 dict() 映射函数创建字典
在这里插入图片描述
注意:无论采用以上哪种方式创建字典,字典中各元素的键都只能是字符串、元组或数字,不能是列表。列表是可变的,不能作为键。
在这里插入图片描述
如果不为 dict() 函数传入任何参数,则代表创建一个空的字典。
在这里插入图片描述
3.访问字典
列表和元组是通过下标来访问元素的,而字典不同,它通过键来访问对应的值。因为字典中的元素是无序的,每个元素的位置都不固定,所以字典也不能像列表和元组那样,采用切片的方式一次性访问多个元素。python 访问字典元素的具体格式为dictname[key]
其中,dictname 表示字典变量的名字,key 表示键名。注意,键必须是存在的,否则会抛出异常。
在这里插入图片描述
除了上面这种方式外,python 更推荐使用 dict 类型提供的 get() 方法来获取指定键对应的值。当指定的键不存在时,get() 方法不会抛出异常。get() 方法的语法格式为:
dictname.get(key,[default])
其中,dictname 表示字典变量的名字,key 表示指定的键,default 用于指定要查询的键不存在时,此方法返回的默认值,如果不手动指定,会返回 None。
在这里插入图片描述
4.删除字典
和删除列表、元组一样,手动删除字典也可以使用 del 关键字。但python 自带垃圾回收功能,会自动销毁不用的字典,所以一般不需要通过 del 来手动删除。
在这里插入图片描述
5.字典添加键值对
为字典添加新的键值对很简单,直接给不存在的 key 赋值即可,具体语法格式如下:dictname[key] = value dictname 表示字典名称,key 表示新的键,value 表示新的值,只要是 python 支持的数据类型都可以。
在这里插入图片描述
6.字典修改键值对
python 字典中键(key)的名字不能被修改,我们只能修改值(value)。字典中各元素的键必须是唯一的,因此,如果新添加元素的键与已存在元素的键相同,那么键所对应的值就会被新的值替换掉,以此达到修改元素值的目的。
在这里插入图片描述
7.字典删除键值对
如果要删除字典中的键值对,还是可以使用 del 语句。
在这里插入图片描述
8.判断字典中是否存在指定键值对
如果要判断字典中是否存在指定键值对,首先应判断字典中是否有对应的键。判断字典是否包含指定键值对的键,可以使用 in 或 not in 运算符。
在这里插入图片描述
9.获取字典中特定数据
keys() 方法用于返回字典中的所有键(key),values() 方法用于返回字典中所有键对应的值(value),items() 用于返回字典中所有的键值对(key-value)。
在这里插入图片描述
10.拷贝字典
copy() 方法返回一个字典的拷贝,也即返回一个具有相同键值对的新字典。注意,copy() 方法所遵循的拷贝原理,既有深拷贝,也有浅拷贝。拿拷贝字典 D1为例,copy() 方法只会对最表层的键值对进行深拷贝,也就是说,它会再申请一块内存用来存放 {‘www’: 1, ‘aaa’: 2},而对于某些列表类型的值来说,此方法对其做的是浅拷贝,也就是说,D2中的 [1,2,3] 的值不是自己独有,而是和 D1共有,因此移除 D1中列表中的元素,也会影响 D2。
在这里插入图片描述
11.更新字典
update() 方法可以使用一个字典所包含的键值对来更新己有的字典。如果被更新的字典中己包含对应的键值对,那么原 value 会被覆盖。如果被更新的字典中不包含对应的键值对,则该键值对被添加进去。
在这里插入图片描述
12.删除键值对
pop() 和 popitem() 都用来删除字典中的键值对,不同的是,pop() 用来删除指定的键值对,而 popitem() 用来随机删除一个键值对。它们的语法格式如下:
dictname.pop(key)
dictname.popitem()
在这里插入图片描述
其实,说 popitem() 随机删除字典中的一个键值对是不准确的,虽然字典是一种无须的列表,但键值对在底层也是有存储顺序的,popitem() 总是弹出底层中的最后一个 key-value,这和列表的 pop() 方法类似,都实现了数据结构中“出栈”的操作。
13.返回键对应的值
setdefault() 方法用来返回某个 key 对应的 value,其语法格式如下:dictname.setdefault(key, defaultvalue) dictname 表示字典名称,key 表示键,defaultvalue 表示默认值(可以不写,不写的话是 None)。如果该 key 存在,那么直接返回该 key 对应的 value;如果该 key 不存在,那么先为该 key 设置默认的 defaultvalue,然后再返回该 key 对应的 defaultvalue。
在这里插入图片描述

集合

python 中的集合,和数学中的集合概念一样,用来保存不重复的元素,即集合中的元素都是唯一的,互不相同。
1.集合的特点
(1)从形式上看,和字典类似,python 集合会将所有元素放在一对大括号 {} 中,相邻元素之间用“,”分隔,如下所示:
{element1,element2,…,elementn} 其中,elementn 表示集合中的元素,个数没有限制。
(2)从内容上看,同一集合中,只能存储不可变的数据类型,包括整形、浮点型、字符串、元组。无法存储列表、字典、集合这些可变的数据类型,否则 Python 解释器会抛出 TypeError 错误。
在这里插入图片描述
注意:
(1)数据必须保证是唯一的,因为集合对于每种数据元素,只会保留一份。
(2)由于 python 中的 set 集合是无序的,所以每次输出时元素的排序顺序可能都不相同。
在这里插入图片描述
2.创建集合
(1)使用 {} 创建
在 python 中,创建 set 集合可以像列表、元素和字典一样,直接将集合赋值给变量,从而实现创建集合的目的。
在这里插入图片描述
(2)set()函数创建集合
set() 函数为 python 的内置函数,其功能是将字符串、列表、元组、range 对象等可迭代对象转换成集合。
在这里插入图片描述
3.访问集合元素
由于集合中的元素是无序的,因此无法向列表那样使用下标访问元素。python 中,访问集合元素最常用的方法是使用循环结构,将集合中的数据逐一读取出来。
在这里插入图片描述
4.删除集合
和其他序列类型一样,也可以使用 del() 语句。
在这里插入图片描述
5.向集合中添加元素
set 集合中添加元素,可以使用 set 类型提供的 add() 方法实现。需要注意的是,使用 add() 方法添加的元素,只能是数字、字符串、元组或者布尔类型(True 和 False)值,不能添加列表、字典、集合这类可变的数据,否则 python 解释器会报 TypeError 错误。
在这里插入图片描述
6.从集合中删除元素
删除现有 set 集合中的指定元素,可以使用 remove() 方法。需要注意的是,如果被删除元素本就不包含在集合中,则此方法会抛出 KeyError 错误。
在这里插入图片描述
7.集合做交集、并集、差集运算
在这里插入图片描述
在这里插入图片描述
补充: frozenset集合(set集合的不可变版本)
set 集合是可变序列,程序可以改变序列中的元素;frozenset 集合是不可变序列,程序不能改变序列中的元素。set 集合中所有能改变集合本身的方法,比如 remove()、discard()、add() 等,frozenset 都不支持;set 集合中不改变集合本身的方法,fronzenset 都支持。
两种情况下可以使用 fronzenset:
第一种:当集合的元素不需要改变时,我们可以使用 fronzenset 替代 set,这样更加安全。
第二种:有时候程序要求必须是不可变对象,这个时候也要使用 fronzenset 替代 set。比如,字典的键(key)就要求是不可变对象。
(1)查看frozenset 集合支持的方法
在这里插入图片描述
(2)使用frozenset可以将可变的元素添加进集合,因为frozenset是不可变的。
在这里插入图片描述
感谢这篇文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值