Python语言中有四种集合数据类型:
- 列表(list) 是一种有序和可更改的集合,允许重复的成员。
- 元组(Tuple) 是一种有序且不可更改的集合。允许重复的成员。
- 集合(Set) 是一个无序和无索引的集合,没有重复的成员。
- 词典(Dictionary) 是一个无序,可变和有索引的集合。没有重复的成员。
选择集合类型时,了解该类型的属性很有用。为特定的数据集选择正确的类型可能意味着保留含义,并且可能意味着提高效率或安全性。
一、列表
列表十一个有序且可更改的集合。在Python中,列表用方括号编写。
1.创建列表
2.访问项目
索引和负的索引
可以通过索引号访问列表项,也可以通过负的索引访问,负索引表示从末尾开始,-1表示最后一个项目,-2表示倒数第二个项目,依此类推:
索引范围和负的索引范围
可以通过指定范围的起点和终点来指定索引范围。指定范围后,返回值将是包含制定项目的新列表。如果要从列表末尾开始搜索,则需要指定负的索引范围:
注:第一项的索引为0。
更改项目值
如需更改特定的项目值,则使用索引号。
更改列表中的第三项:
遍历列表
可以使用for循环遍历列表项,逐个打印列表中的所有项目:
有关for循环的知识我们后面进行深入学习。
检查项目是否存在
如需检查列表中是否存在指定的项,请使用 in
关键字:
3.列表长度
如需确定列表中有多少项,则使用len()
方法:
4.添加和删除项目
添加项目:如需将项目添加到列表的末尾,使用 append() 方法,在指定的索引处添加项目,使用 insert() 方法:
删除项目:有几种方法可以将项目从列表中删除:
remove() 方法删除指定的项目;①
pop() 方法删除指定的索引(如果未指定索引,则删除最后一项);②
del 关键字删除指定的索引,也能完整地删除列表;③
del list[:] 方法清空列表。④
①
②
③
④
5.复制和合并列表
复制列表:只能通过键入list2 = list1
来复制列表,因为:list2
将只是对list1
的引用,list1
中所做的更改也将自动在list2中进行:
使用 list()
方法复制列表:
合并两个列表:在python中,有几种方法可以连接或串联两个或多个列表,最简单的方法之一就是使用 +
运算符
连接两个列表的另一种方法是将 list2 中的所有项一个接一个地追加到 list1 中:
使用 extend() 方法将 list2 添加到 list1 的末尾:
6.list构造函数
也可以使用 list() 构造函数创建一个新列表。
使用 list() 构造函数创建列表:
列表方法
Python 有一组可以在列表上使用的内建方法。
方法 | 描述 |
---|---|
append() | 在列表的末尾添加一个元素 |
clear() | 删除列表中的所有元素 |
copy() | 返回列表的副本 |
count() | 返回具有指定值的元素数量。 |
extend() | 将列表元素(或任何可迭代的元素)添加到当前列表的末尾 |
index() | 返回具有指定值的第一个元素的索引 |
insert() | 在指定位置添加元素 |
pop() | 删除指定位置的元素 |
remove() | 删除具有指定值的项目 |
reverse() | 颠倒列表的顺序 |
sort() | 对列表进行排序 |
二、元组
元组是有序且不可更改的集合。在 Python 中,元组是用圆括号编写的。
1.元组的特点
1、与列表相似,不同之处就在于元组的元素不能被修改。
2、列表使用的是中括号“[]”,元组使用的是小括号“()”。
3、列表属于可变类型,元组属于不可变类型。
4、Python内部对元组进行了大量的优化,访问喝处理速度都比列表快。
2.元组的创建和访问
创建元组
访问元组项目
可以通过引用方括号内的索引号来访问元组项目:
打印元组中的第二个项目:
负索引:负索引表示从末尾开始,-1表示最后一个项目,-2表示倒数第二个项目,以此类推。
打印元组的最后一个项目:
索引范围: 通过指定范围的起点和终点来指定索引范围,指定范围后,返回值将是带有指定项目的新元组。如果要从元组的末尾开始搜索,则指定负索引。
注:正索引的第一项索引为0,搜索将从起始位置(包括)开始,到结尾位置(不包括)结束。上面的例子返回的则是从索引-4
(包括)到索引 -1
(排除)的项目。
更改元组值
创建元组后,无法更改其值,元组是不可变的,或者也可以称为恒定的,但有一种解决方法,可以将元组转换为列表,更改列表,然后将列表转换回元组。
遍历元组
可以使用for
循环遍历元组项目
遍历项目并打印值:
检查项目是否存在
要确定元组中是否存在指定的项,则使用in
关键字 :
检查元组中是否存在“apple”:
元组长度
要确定元组有多少项,请使用 len() 方法:
3.添加和删除项目
元组一旦创建,就无法向其添加项目,也无法从中删除项目,元组是不可改变的但可以完全删除元组。
del关键字可以完全删除元组:
创建有一个项目的元组
如需创建仅包含一个项目的元组,必须在该项目后添加一个逗号,否则 Python 无法将变量识别为元组。
不加“,”,就会变成字符串:
4.合并两个元组
如需连接两个或多个元组,可以使用+
运算符:
合并这个元组:
5.tuple() 构造函数
也可以使用tuple() 构造函数来创建元组。
元组方法
Python 提供两个可以在元组上使用的内建方法。
方法 | 描述 |
---|---|
count | 返回元组中指定值出现的次数 |
index | 在元组中搜索指定的值并返回它被找到的位置 |
三、集合
集合是python提供的内置数据结构,属于可变序列;
集合就是没有value的字典,数据存储和也使用哈希
集合是无序和无索引的集合。在 Python 中,集合用花括号编写
1.集合的创建和访问
创建集合
注: 集合是无序的,因此无法确定项目的显示顺序。
访问项目
无法通过引用索引来访问 set中的项目,因为 set
是无序的,项目没有索引。但可以使用 for
循环遍历 set 项目,或者使用 in
关键字查询集合中是否存在指定值。
遍历集合,并打印值:
检查set中是否存在“banana”:
更改项目:
集合一旦创建,就无法更改项目,但是可以添加新项目。
2.添加和删除项目
要想添加一个项目到集合,请使用add()
方法,要向集合中添加多个项目,请使用update()
方法。
使用add()
方法向set添加项目:
使用 update()
方法将多个项添加到集合中:
要删除集合中的项目,请使用
remove()
或 discard()
方法。
使用 remove()
方法来删除 “banana”:
使用 discard() 方法来删除 “banana”:
注: 如果要删除的项目不存在,remove()
会引发错误,而discard()
不会引发错误。
还可以使用 pop() 方法删除项目,但此方法将删除最后一项。请记住,set 是无序的,因此我们不会知道被删除的是什么项目,pop() 方法的返回值是被删除的项目。
使用 pop() 方法删除最后一项:
del 彻底删除集合:
3.合并两个集合
在 Python 中,有几种方法可以连接两个或多个集合。
可以使用 union() 方法返回包含两个集合中所有项目的新集合,也可以使用 update() 方法将一个集合中的所有项目插入另一个集合中:
union() 方法返回一个新集合,其中包含两个集合中的所有项目:
update() 方法将 set2 中的项目插入 set1 中:
注:union() 和 update() 都将排除任何重复项
4.set()构造函数
可以使用set()
构造函数来创建集合:
set()方法
方法 | 描述 |
---|---|
add() | 向集合添加元素。 |
clear() | 删除集合中的所有元素。 |
copy() | 返回集合的副本。 |
difference() | 返回包含两个或更多集合之间差异的集合。 |
difference_update() | 删除此集合中也包含在另一个指定集合中的项目。 |
discard() | 删除指定项目。 |
intersection() | 返回为两个其他集合的交集的集合。 |
intersection_update() | 删除此集合中不存在于其他指定集合中的项目。 |
isdisjoint() | 返回两个集合是否有交集。 |
issubset() | 返回另一个集合是否包含此集合。 |
issuperset() | 返回此集合是否包含另一个集合。 |
pop() | 从集合中删除一个元素。 |
remove() | 删除指定元素。 |
symmetric_difference() | 返回具有两组集合的对称差集的集合。 |
symmetric_difference_update() | 插入此集合和另一个集合的对称差集。 |
union() | 返回包含集合并集的集合。 |
update() | 用此集合和其他集合的并集来更新集合。 |
四、字典
字典是一个无序、可变和有索引的集合。在 Python 中,字典用花括号编写,拥有键和值。
1.字典的创建和访问
创建并打印字典:
访问项目
可以通过在方括号内引用其键名来访问字典的项目:
也可以使用get()
方法,会获得相同的结果。
更改值
可以通过引用其键名来更改特定的值:
把“year”
改为2022
:
遍历字典
可以使用 for 循环遍历字典。
循环遍历字典时,返回值是字典的键,但也有返回值的方法。
逐个打印字典中的所有键名:
逐个打印字典中的所有值:
还可以使用 values() 函数返回字典的值:
通过使用 items() 函数遍历键和值:
检查键是否存在
要确定字典中是否存在指定的键,请使用in
关键字:
检查字典中是否存在model:
字典长度
要确定字典有多少项目(键值对),请使用len()
方法。
打印字典中的项目数:
2.添加和删除项目
添加项目
通过使用新的索引键并为其赋值,可以将项目添加到字典中:
删除项目
有几种方法可以从字典中删除项目:
pop()方法删除具有指定键名的项:
popitem() 方法删除最后插入的项目(在 3.7 之前的版本中,删除随机项目):
del 关键字删除具有指定键名的项目:
复制字典
不能通过dict2
= dict1
来复制字典,因为:dict2
只是对dict1
的引用,而dict1
中的更改也将自动在dict2中进行。
有一些方法可以进行复制,一种方法是使用内建的字典方法copy()
。
使用copy()
方法来复制字典:
制作副本的另一种方法是使用内建方法 dict()
使用 dict() 方法创建字典的副本:
嵌套字典
词典中也可以包含许多字典,这些被称为嵌套字典:
3.dict() 构造函数
可以使用dict()
构造函数创建新的字典:
字典方法:
Python 提供一组可以在字典上使用的内建方法。
方法 | 描述 |
---|---|
clear() | 删除字典中的所有元素 |
copy() | 返回字典的副本 |
fromkeys() | 返回拥有指定键和值的字典 |
get() | 返回指定键的值 |
items() | 返回包含每个键值对的元组的列表 |
keys() | 返回包含字典键的列表 |
pop() | 删除拥有指定键的元素 |
popitem() | 删除最后插入的键值对 |
setdefault() | 返回指定键的值。如果该键不存在,则插入具有指定值的键。 |
update() | 使用指定的键值对字典进行更新 |
values() | 返回字典中所有值的列表 |