Python之组合数据类型(笔记)

一、集合类型

1、定义:

集合是多个元素的无序组合
-集合类型与数学中的集合概念一致
-集合元素之间无序,每个元素唯一,不存在相同元素
-集合元素不可更改,不能是可变数据类型
不可变数据类型包括:整数、浮点数、复数、字符串、元组等
可变数据类型包括:列表

2、表示和建立:

集合用大括号{ }表示,元素间用逗号分隔
-建立集合类型用{}或set()
-建立空集合类型,必须使用set()
**注意:**使用set()建立集合是将提供的字符串拆分,拆分后的每一个元素作为集合的元素

>>> A = {"a",123,("a",123)}
>>> print(A)
{123, 'a', ('a', 123)}#集合的元素可以是多种数据结构

>>> B = set("pypy123")
>>> print(B)
{'y', 'p', '1', '3', '2'}#set()函数是将提供的内容拆分后放到集合中

>>> C = {"a","b","a","b"}
>>> print(C)
{'a', 'b'}#集合中的每个元素必须是唯一的

3、集合操作符

在这里插入图片描述在这里插入图片描述在这里插入图片描述

4、集合处理方法

S.add(x) 如果x不在集合S中,将x增加到SS.discard(x) 移除S中元素x,如果x不在集合S中,不报错S.remove(x) 移除S中元素x,如果x不在集合S中,产生KeyError异常S.clear() 移除S中所有元素S.pop() 随机返回S的一个元素,更新S,若S为空产生KeyError异常S.copy() 返回集合S的一个副本len(S) 返回集合S的元素个数x in S 判断S中元素x,x在集合S中,返回True,否则返回Falsex not in S 判断S中元素x,x不在集合S中,返回True,否则返回Falseset(x) 将其他类型变量x转变为集合类型

5、集合类型的应用场景

1、包含关系比较

>>> "p" in {"p","y",123}
True
>>> {"p","y"}>={"p","y",123}
False

2、最典型:数据去重

>>> ls = ["p","p","y","y",123]
>>> s = set(ls)#利用了集合无重复元素的特点
>>> print(s)
{123, 'y', 'p'}
>>> s = list(s)
>>> print(s)#再通过list函数转成列表
[123, 'y', 'p']

二、序列类型

1、定义

:序列是具有先后关系的一组元素
-序列是一维元素向量,元素类型可以不同
-类似数学元素序列
-元素间由序号引导,通过下标访问序列的特定元素
注意:序列是一个基类类型,它衍生出三种数据类型,包括字符串类型、元组类型以及列表类型,序列类型的所有操作在这三种类型中都是适用的,而这三种类型又有各自独特操作方法。在这里插入图片描述
序号:与字符串类似,序列可用序号来标定每个元素,不同的是字符串的元素都是字符,而序列的元素有多种类型
在这里插入图片描述

2、序列处理函数及方法

在这里插入图片描述

>>> ls = ["abc",123,"python"]
>>> ls[::-1]
['python', 123, 'abc']

在这里插入图片描述

>>> ls = ["abc",123,"python"]
>>> len(ls)
3
>>> s = "python123.io"
>>> max(s)#按字母序排列
'y'

3、元组类型及操作

定义:元组是序列类型的一种扩展
-元组是一种序列类型,一旦创建就不能被修改
-使用小括号( )或tuple( )创建,元素间用逗号,分隔
-可以使用或不使用小括号

>>> creature = "cat","dog","tiger","human"
>>> print(creature)
('cat', 'dog', 'tiger', 'human')

>>> color = "red","blue",creature
>>> print(color)
('red', 'blue', ('cat', 'dog', 'tiger', 'human'))#元组内可包含元组

注意:
1、元组继承了序列类型的全部通用操作
2、元组因为创建后不能修改,因此没有特殊操作
3、使用或不使用小括号

>>> color = "red","blue",creature
>>> color[-1][2]#[-1]元素是一个元组,故可用[2]继续索引
'tiger'

4、列表类型及操作

(1)定义

:列表是序列类型的一种扩展,十分常用
1、列表是一种序列类型,创建后可以随意被修改
2、使用方括号或list( )创建,元素间用逗号,分隔
3、列表中各元素类型可以有多种,如整型数字,浮点型,字符串以及对象等

>>> ls = [ "cat","dog","tiger","human"]
>>> print(ls)
['cat', 'dog', 'tiger', 'human']

>>> lt = ls 
>>> print(lt)
['cat', 'dog', 'tiger', 'human']

List1=[1,2,3,'hello world','3.1415926',[1,2,3]]
print(List1)

Output:
[1, 2, 3, 'hello world', '3.1415926', [1, 2, 3]]

注意:方括号[ ]真正创建一个列表,赋值仅传递引用,即赋值仅仅是将列表又定义了一个名字,上例中lt和ls指向的是同一段内存空间

(2)列表类型操作函数和方法

在这里插入图片描述

>>> ls = ["cat","dog","tiger",1024]
>>> ls[1:2] = [1,2,3,4]
>>> print(ls)
['cat', 1, 2, 3, 4, 'tiger', 1024]

在这里插入图片描述

>>> ls = ["cat","dog",1234]
>>> ls.append("tiger")
>>> print(ls)
['cat', 'dog', 1234, 'tiger']

>>> ls.insert(2,"human")
>>> print(ls)
['cat', 'dog', 'human', 1234, 'tiger']

>>> ls.reverse()
>>> print(ls)
['tiger', 1234, 'human', 'dog', 'cat']

#extend() 函数用于在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)。
aList = [123, 'xyz', 'zara', 'abc', 123];
bList = [2009, 'manni'];
aList.extend(bList)
print(aList)

Output:
[123, 'xyz', 'zara', 'abc', 123, 2009, 'manni']

注意:
1、append是增加一个元素,该元素可以为列表;extend是增加一个序列的多个值

(3)小测

#定义空列表lt
>>> lt = []
#向lt新增5个元素
>>> lt += ["a","b",1,2,3]
>>> lt
['a', 'b', 1, 2, 3]
#修改lt中第2个元素
>>> lt[1] = "c"
#向lt中第二个位置增加一个元素
>>> lt.insert(1,"d")
>>> lt
['a', 'd', 'c', 1, 2, 3]
#从lt中第一个位置删除一个元素
>>> del lt[0]
>>> lt
['d', 'c', 1, 2, 3]
#删除lt中第1-3个元素
>>> del lt[0:3]
>>> lt
[2, 3]
#判断lt中是否包含数字0
>>> 0 in lt
False
#向lt新增数字0
>>> lt.append(0)
>>> lt
[2, 3, 0]
#返回数字0所在lt中的索引
>>> lt.index(0)
2
#lt的长度
>>> len(lt)
3
#lt中的最大元素
>>> max(lt)
3
#清空lt
>>> lt.clear()
>>> lt
[]

(4)序列类型应用场景

元组用于元素不改变的应用场景,更多用于固定搭配场景
-列表更加灵活,它是最常用的序列类型
-最主要作用:表示一组有序数据,进而操作它们

1、元素遍历
2、数据保护(利用元组)

>>> ls = ["a","b",1,2,3]
>>> lt = tuple(ls)
>>> lt
('a', 'b', 1, 2, 3)

三、字典类型

1、定义

理解“映射"
-映射是一种键(索引)和值(数据)的对应

字典类型是“映射”的体现
-键值对:键是数据索引的扩展
-字典是键值对的集合,键值对之间无序
-采用大括号{ }和dict()创建,键值对用冒号:表示,每个键值对之间yong逗号,隔开
在这里插入图片描述

>>> d = {"China":"beijing","France":"Paris"}
>>> d
{'China': 'beijing', 'France': 'Paris'}
>>> d["China"]
'beijing'
>>> type(d)
<class 'dict'>

需要注意的是:建立空字典可以用{ },因为字典非常常用,所以把这一功能给它而不是集合,建立空集合必须用set()

2、字典处理函数及方法

在这里插入图片描述

>>> d.keys()
dict_keys(['China', 'France'])
>>> d.values()
dict_values(['beijing', 'Paris'])
>>> type(d.values())
<class 'dict_values'>

可见,keys和values方法返回的不是列表类型,他们可以用for in方式做遍历,但不可用列表的操作
在这里插入图片描述

>>> d.get("China","America")
'beijing'
>>> d.get("America","England")
'England'
>>> d.popitem()
('France', 'Paris')

3、小测

#定义新字典de
>>> de = {}
>#向de新增两个元素
>>> de["Name"] = "Yuanzheng"
>>> de["Age"] = 21
>>> de
{'Name': 'Yuanzheng', 'Age': 21}
#修改第二个元素
>>> de["Age"] = 22
>>> de
{'Name': 'Yuanzheng', 'Age': 22}
#判断字符“c”是否是de的键
>>> "c" in de
False
#计算de的长度
>>> len(de)
2
#清空de
>>> de.clear()
>>> de
{}

4、字典类型应用场景

1、 映射的表达
-映射无处不在,键值对无处不在
-例如:统计数据出现的次数,数据是键,次数是值
-最主要作用:表达键值对数据,进而操作它们
2、元素遍历

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值