源作者:Pylearner
差集运算第6章组合数据类型
第六章学习知识导图
考点主要是:
1) 组合数据类型的基本概念
2) 列表类型:定义、索引、切片
3) 列表类型的操作:列表的操作函数、列表的操作方法
4) 字典类型:定义、索引
5) 字典类型的操作:字典的操作函数、字典的操作方法
6) 作者归纳:这章结束,加上前面介绍的字符串的相关知识,二级python的数据类型就基本介绍完了
学习方法:区分函数和方法的区别及使用,一定要熟练,例子最好一点一点都看一遍,弄清楚是否返回或者直接在原来的类型上改变,分清楚这些,这部分就没什么问题了,,这部分一般是考两道5分的编程填空题,一定拿下。
一、组合数据类型的基本概念
1、组合数据类型
(1) Python语言中最常用的组合数据类型有3大类,分别是集合类型、序列类型和映射类型。
(2) 集合类型是一个具体的数据类型名称,而序列类型和映射类型是一类数据类型的总称。
(3) 集合类型是一个元素集合,元素之间无序,相同元素在集合中唯一存在。
(4) 序列类型是一个元素向量,元素之间存在先后关系,通过序号访问,元素之间不排他。序列类型的典型代表是字符串类型和列表类型。
(5) 映射类型是“键-值”数据项的组合,每个元素是一个键值对,表示为(key, value)。映射类型的典型代表是字典类型。
2、集合类型概述
(1) Python语言中的集合类型与数学中的集合概念一致,即包含0个或多个数据项的无序组合。
(2) 集合是无序组合,用大括号({})表示,它没有索引和位置的概念,集合中元素可以动态增加或删除。
(3) 集合中元素不可重复,元素类型只能是固定数据类型,例如:整数、浮点数、字符串、元组等,列表、字典和集合类型本身都是可变数据类型,不能作为集合的元素出现。
>>>S = {1010, "1010", 78.9}
>>>type(S)
>>>len(S)
3
>>>print(S)
{78.9, 1010, '1010'}
(4) 需要注意,由于集合元素是无序的,集合的打印效果与定义顺序可以不一致。由于集合元素独一无二,使用集合类型能够过滤掉重复元素。
>>>T = {1010, "1010", 12.3, 1010, 1010}
>>>print(T)
{1010, '1010', 12.3}
(5) 集合类型有4个操作符,交集(&)、并集(|)、差集(-)、补集(^),操作逻辑与数学定义相同。
操作符的运算描述
>>>S = {1010, "1010", 78.9}
>>>T = {1010, "1010", 12.3, 1010, 1010}
>>>S - T
{78.9}
>>>T - S
{12.3}
>>>S & T
{1010,'1010'}
>>>T & S
{1010,'1010'}
>>>S ^ T
{78.9,12.3}
>>>T ^ S
{78.9,12.3}
>>>S | T
{78.9,1010, 12.3,'1010'}
>>>T | S
{1010,12.3, 78.9,'1010'}
(6) 集合类型有一些常用的操作函数或方法
函数或方法描述
(7) 集合类型主要用于元素去重,适合于任何组合数据类型。
>>>S = set('知之为知之不知为不知')
>>>S
{'不', '为', '之', '知'}
>>>for i in S:
print(i, end="")
不为之知
3、序列类型概述
(1) 序列类型是一维元素向量,元素之间存在先后关系,通过序号访问。
(2) 由于元素之间存在顺序关系,所以序列中可以存在相同数值但位置不同的元素。Python语言中有很多数据类型都是序列类型,其中比较重要的是:字符串类型和列表类型,此外还包括元组类型。
(3) 字符串类型可以看成是单一字符的有序组合,属于序列类型。列表则是一个可以使用多种类型元素的序列类型。序列类型使用相同的索引体系,即正向递增序号和反向递减序号。
(4) 序列类型有一些通用的操作符和函数
4、映射类型概述
(1) 映射类型是“键-值”数据项的组合,每个元素是一个键值对,即元素是(key, value),元素之间是无序的。键值对是一种二元关系,源于属性和值的映射关系
(2) 映射类型是序列类型的一种扩展。在序列类型中,采用从0开始的正向递增序号进行具体元素值的索引。而映射类型则由用户来定义序号,即键,用其去索引具体的值。
(3) 键(key)表示一个属性,也可以理解为一个类别或项目,值(value)是属性的内容,键值对刻画了一个属性和它的值。键值对将映射关系结构化,用于存储和表达。
二、列表类型
1、列表的定义
(1) 列表是包含0个或多个元组组成的有序序列,属于序列类型。列表可以元素进行增加、删除、替换、查找等操作。列表没有长度限制,元素类型可以不同,不需要预定义长度。
(2) 列表类型用中括号([])表示,也可以通过list(x)函数将集合或字符串类型转换成列表类型。
>>>ls = [1010, "1010", [1010, "1010"], 1010]
>>>ls
[1010, '1010', [1010, '1010'], 1010]
>>>list('列表可以由字符串生成')
['列', '表', '可', '以', '由', '字', '符', '串', '生', '成']
>>>list()
[]
(3) 列表属于序列类型,所以列表类型支持序列类型对应的操作
2、列表的索引
(1) 索引是列表的基本操作,用于获得列表的一个元素。使用中括号作为索引操作符。
>>>ls = [1010, "1010", [1010, "1010"], 1010]
>>>ls[3]
1010
>>>ls[-2]
[1010, '1010']
>>>ls[5]
Traceback (most recent call last):
File "", line 1, inls[5]
IndexError: list index out of range
(2) 可以使用遍历循环对列表类型的元素进行遍历操作,基本使用方式如下:
forin:
····
>>>ls = [1010, "1010", [1010, "1010"], 1010]
>>>for i in ls: print(i*2)
2020
10101010 [1010, '1010', 1010, '1010'] 2020
3、列表的切片
(1) 切片是列表的基本操作,用于获得列表的一个片段,即获得一个或多个元素。切片后的结果也是列表类型。切片有两种使用方式:
[N: M]或[N: M: K]
切片获取列表类型从N到M(不包含M)的元素组成新的列表。当K存在时,切片获取列表类型从N到M(不包含M)以K为步长所对应元素组成的列表。
>>>ls = [1010, "1010", [1010, "1010"], 1010]
>>>ls[1:4]
['1010', [1010, '1010'], 1010]
>>>ls[-1:-3]
[]
>>ls[-3:-1]
['1010', [1010, '1010']]
>>>ls[0:4:2]
[1010, [1010, '1010']]
三、列表类型的操作
1、列表的操作函数
(1) 列表类型继承序列类型特点,有一些通用的操作函数
>>>ls = [1010, "1010", [1010, "1010"], 1010]
>>>len(ls)
4
>>>lt = ["Python", ["1010", 1010, [1010, "Python"]]]
>>>len(lt)
2
(2) min(ls)和max(ls)分别返回一个列表的最小或最大元素,使用这两个函数的前提是列表中各元素类型可以进行比较。
>>>ls = [1010, 10.10, 0x1010]
>>>min(ls)
10.1
>>>lt = ["1010", "10.10", "Python"]
>>>max(lt)
'Python'
>>>ls = ls + lt
>>>print(ls)
[1010, 10.1, 4112, '1010', '10.10', 'Python']
>>>min(ls)
Traceback (most recent call last):
File "", line 1, inmin(ls)
TypeError: '>>list("Python")
['P', 'y', 't', 'h', 'o', 'n']
>>>list({"小明", "小红", "小白", "小新"})
['小红', '小明', '小新', '小白']
>>>list({"201801":"小明", "201802":"小红", "201803":"小白"}) ['201801', '201802', '201803']
2、列表的操作方法
(1) 列表类型存在一些操作方法,使用语法形式是:
.()
(2) ls.append(x)在列表ls最后增加一个元素x。
>>>lt = ["1010", "10.10", "Python"]
>>>lt.append(1010)
>>>print(lt)
['1010', '10.10', 'Python', 1010]
>>>lt.append([1010, 0x1010])
>>>print(lt)
['1010', '10.10', 'Python', 1010, [1010, 4112]]
ls.append(x)仅用于在列表中增加一个元素,如果希望增加多个元素,可以使用加号,将两个列表合并。
>>>lt = ["1010", "10.10", "Python"]
>>>ls = [1010, [1010, 0x1010]]
>>>ls += lt
>>>print(lt)
['1010', '10.10', 'Python', 1010, [1010, 4112]]
(3) ls.insert(i, x)在列表ls中序号i位置上增加元素x,序号i之后的元素序号依次增加。
>>>lt = ["1010", "10.10", "Python"]
>>>lt.insert(1, 1010)
>>>print(lt)
['1010', 1010, '10.10', 'Python']
(4) ls.clear()将列表ls的所有元素删除,清空列表。
差集运算性质>>>lt = ["1010", "10.10", "Python"]
>>>lt.clear()
>>>print(lt)
[]
(5) ls.pop(i)将返回列表ls中第i位元素,并将该元素从列表中删除。
>>>lt = ["1010", "10.10", "Python"]
>>>print(lt.pop(1))
10.10
>>>print(lt)
["1010", "Python"]
(6) ls.remove(x)将删除列表ls中第一个出现的x元素。
>>>lt = ["1010", "10.10", "Python"]
>>>lt.remove("10.10")
>>>print(lt)
["1010", "Python"]
除了上述方法,还可以使用Python保留字del对列表元素或片段进行删除,使用方法如下:
del[] 或del[:]
>>>lt = ["1010", "10.10", "Python"]
>>>del lt[1]
>>>print(lt)
["1010", "Python"]
>>>lt = ["1010", "10.10", "Python"]
>>>del lt[1:]
>>>print(lt)
["1010"]
(7) ls.reverse()将列表ls中元素进行逆序反转。
>>>lt = ["1010", "10.10", "Python"]
>>>print(lt.reverse())
['Python', '10.10', '1010']
(8) ls.copy() 复制ls中所有元素生成一个新列表。
>>>lt = ["1010", "10.10", "Python"]
>>>ls = lt.copy()
>>>lt.clear()# 清空lt
>>>print(ls)
["1010", "10.10", "Python"]
由上例看出,一个列表lt使用.copy()方法复制后赋值给变量ls,将lt元素清空不影响新生成的变量ls。
需要注意,对于基本的数据类型,如整数或字符串,可以通过等号实现元素赋值。但对于列表类型,使用等号无法实现真正的赋值。其中,ls = lt语句并不是拷贝lt中
元素给变量ls,而是新关联了一个引用,即ls和lt所指向的是同一套内容。
>>>lt = ["1010", "10.10", "Python"]
>>>ls = lt# 仅使用等号
>>>lt.clear()
>>>print(ls)
[]
(9) 使用索引配合等号(=)可以对列表元素进行修改。
>>>lt = ["1010", "10.10", "Python"]
>>>lt[1] = 1010
>>>print(lt)
["1010", 1010, "Python"]
(10) 列表是一个十分灵活的数据结构,它具有处理任意长度、混合类型的能力,并提供了丰富的基础操作符和方法。当程序需要使用组合数据类型管理批量数据时,请尽量使用列表类型。
四、字典类型
1、字典的定义
(1) “键值对”是组织数据的一种重要方式,广泛应用在Web系统中。键值对的基本思想是将“值”信息关联一个“键”信息,进而通过键信息查找对应值信息,这个过程叫映射。Python语言中通过字典类型实现映射。
(2) Python语言中的字典使用大括号{}建立,每个元素是一个键值对,使用方式如下:
{:,:, … ,:}
其中,键和值通过冒号连接,不同键值对通过逗号隔开。字典类型也具有和集合类似的性质,即键值对之间没有顺序且不能重复。
变量d可以看作是“学号”与“姓名”的映射关系。需要注意,字典各个元素并没有顺序之分。
>>>d = {"201801":"小明", "201802":"小红", "201803":"小白"}
>>>print(d)
{'201801': '小明', '201802': '小红', '201803': '小白'}
2、字典的索引
(1) 列表类型采用元素顺序的位置进行索引。由于字典元素“键值对”中键是值的索引,因此,可以直接利用键值对关系索引元素。
(2) 字典中键值对的索引模式如下,采用中括号格式:
=[]
>>>d = {"201801":"小明", "201802":"小红", "201803":"小白"}
>>>print(d["201802"])
小红
(3) 利用索引和赋值(=)配合,可以对字典中每个元素进行修改。
>>>d["201802"] = '新小红'
>>>print(d)
{'201801': '小明', '201803': '小白', '201802': '新小红'}
(4) 使用大括号可以创建字典。通过索引和赋值配合,可以向字典中增加元素。
>>>t = {}
>>>t["201804"] = "小新"
>>>print(d)
{'201804': '小新'}
(5) 字典是存储可变数量键值对的数据结构,键和值可以是任意数据类型,通过键索引值,并可以通过键修改值。
五、字典类型的操作
1、字典的操作函数
(1) 通用的操作函数
(2) len(d)给出字典d的元素个数,也称为长度。
>>>d = {"201801":"小明", "201802":"小红", "201803":"小白"}
>>>len(d)
3
(3) min(d)和max(d)分别返回字典d中最小或最大索引值。
>>>d = {"201801":"小明", "201802":"小红", "201803":"小白"}
>>>min(d)
'201801'
>>>max(d)
'201803'
(4) dict()函数用于生成一个空字典,作用和{}一致。
>>>d = dict()
>>>print(d)
{}
2、字典的操作方法
(1) 字典类型存在一些操作方法,使用语法形式是:
.()
(2) d.keys()返回字典中的所有键信息,返回结果是Python的一种内部数据类型dict_keys,专用于表示字典的键。如果希望更好的使用返回结果,可以将其转换为列表类型。
>>>d = {"201801":"小明", "201802":"小红", "201803":"小白"}
>>>d.keys()
dict_keys(['201801', '201802', '201803'])
>>>type(d.keys())
>>>list(d.keys())
['201801', '201802', '201803']
(3) d.values()返回字典中的所有值信息,返回结果是Python的一种内部数据类型dict_values。如果希望更好的使用返回结果,可以将其转换为列表类型。
>>>d = {"201801":"小明", "201802":"小红", "201803":"小白"}
>>>d.values()
dict_values(['小明', '小红', '小白'])
>>>type(d.values())
>>>list(d.values())
['小明', '小红', '小白']
(4) d.items()返回字典中的所有键值对信息,返回结果是Python的一种内部数据类型dict_items。
>>>d = {"201801":"小明", "201802":"小红", "201803":"小白"}
>>>d.items()
dict_items([('201801', '小明'), ('201802', '小红'), ('201803', '小白')])
>>>type(d.items())
>>>list(d.items())
[('201801', '小明'), ('201802', '小红'), ('201803', '小白')]
(5) d.get(key, default)根据键信息查找并返回值信息,如果key存在则返回相应值,否则返回默认值,第二个元素default可以省略,如果省略则默认值为空。
>>>d = {"201801":"小明", "201802":"小红", "201803":"小白"}
>>>d.get('201802')
'小红'
>>>d.get('201804')
>>>d.get('201804', '不存在')
'不存在'
(6) d.pop(key, default)根据键信息查找并取出值信息,如果key存在则返回相应值,否则返回默认值,第二个元素default可以省略,如果省略则默认值为空。相比d.get()方法,d.pop()在取出相应值后,将从字典中删除对应的键值对。
>>>d = {"201801":"小明", "201802":"小红", "201803":"小白"}
>>>d.pop('201802')
'小红'
>>>print(d)
{'201801': '小明', '201803': '小白'}
>>>d.pop('201804', '不存在')
'不存在'
(7) d.popitem()随机从字典中取出一个键值对,以元组(key, value)形式返回。取出后从字典中删除这个键值对。
>>>d = {"201801":"小明", "201802":"小红", "201803":"小白"}
>>>print(d.popitem())
('201803', '小白')
>>>d
{'201801': '小明', '201802': '小红'}
(8) d.clear()删除字典中所有键值对。
>>>d = {"201801":"小明", "201802":"小红", "201803":"小白"}
>>>d.clear()
>>>print(d)
{}
(9) 此外,如果希望删除字典中某一个元素,可以使用Python保留字del。
>>>d = {"201801":"小明", "201802":"小红", "201803":"小白"}
>>>del d["201801"]
>>>print(d)
{'201802': '小红', '201803': '小白'}
(10) 字典类型也支持保留字in,用来判断一个键是否在字典中。如果在则返回True,否则返回False。
>>>d = {"201801":"小明", "201802":"小红", "201803":"小白"}
>>>"201801" in d
True
>>>"201804" in d
False
(11) 与其他组合类型一样,字典可以遍历循环对其元素进行遍历,基本语法结构如下:
forin
for循环返回的变量名是字典的索引值。如果需要获得键对应的值,可以在语句块中通过get()方法获得。(重点记一下,考大题会用到)
>>>d = {"201801":"小明", "201802":"小红", "201803":"小白"}
>>>for k in d:
print("字典的键和值分别是:{}和{}".format(k, d.get(k)))
字典的键和值分别是:201801和小明
字典的键和值分别是:201802和小红
字典的键和值分别是:201803和小白
六、本章小结
本章主要介绍了组合数据类型的相关知识,这章是整个python学习中的基础的基础,加上前面介绍过的字符串的相关知识,基本上python二级考试的数据类型已经全部介绍完了,学习这部分的重点是函数和方法的区别及使用,一定要熟练,例子最好一点一点都看一遍,弄清楚是否返回或者直接在原来的类型上改变,分清楚这些,这部分就没什么问题了,,这部分一般是考两道5分的编程填空题,一定拿下,大部分地区的二级报名及考试都差不多结束了,而且个个大学也马上就要放假了,希望大家在假期好好复习,等开学再看时间就有点不够了。想打印二级python文件的私信找我要PDF吧,或者对二级考试有疑问的都可以私信或者评论区问我,我一一解答。
希望大学的同胞们期末有个好成绩。整理不易,希望大家关注支持,二级python考试还不够细,我会在放假时间系统介绍更为细节的python相关知识,希望大家关注支持。
侵权必删。