Python小白学习之路(八)—【变量】【基本数据类型分类】【集合】【集合的功能】
一、变量
变量的作用:记录状态的变化
变量的值:描述不同的状态
二、五大基本数据类型的分类
五大基本数据类型(数字 字符串 列表 元祖 字典)
按照可变不可变来进行分类
可变:列表、字典
不可变:字符串、数字、元祖
我个人理解,所谓可变,是指当修改内容是,内容改变,地址不变。(即新修改的内容可以覆盖之前的内容即为可变)
按照访问顺序来进行分类
直接访问:数字
顺序访问:字符串、列表、元祖
映射访问:字典
按照存放元素的个数来进行分类
容器类型:列表、元祖、字典
原子类型:数字、字符串
三、基本数据类型补充——集合(set)
set集合,是一个无序且不重复的元素集合
定义:
- 不同元素组成
- 无序
- 集合中的元素必须是不可变类型(字符串、数字、元祖)
集合的创建:
可以使用大括号 { } 或者 set() 函数创建集合
注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
创建格式:
S = {value1,value2,...}
或者
set(value)
#集合的创建(第二个集合在打印过程中自动去除重复元素) s1 = set('hello') s2 = {123,'alex','xhg','alex'} print(s1,s2 ) #执行结果 {'h', 'l', 'e', 'o'} {'alex', 'xhg', 123}
集合的功能
1.add
- Add an element to a set.
- This has no effect if the element is already present.
#当添加的元素原集合中不存在时,无应答 s1 = {123,'alex','xhg'} s1.add('lb') print(s1 ) #执行结果 {'alex', 123, 'lb', 'xhg'} #当添加的元素原集合中存在时 s1 = {123,'alex','xhg'} s1.add('alex') print(s1 ) #执行结果 {'alex', 123, 'xhg'}
2.clear
- Remove all elements from this set.
s1 = {123,'alex','xhg',('lucy',888),'pyh'} s1.clear() print(s1) #执行结果 set()
3.copy
Return a shallow copy of a set. s1 = {123,'alex','xhg'} s2 = s1.copy() print(s2) #执行结果 {'xhg', 123, 'alex'}
4.difference
- 从数学角度来讲,就是求差集(但是各自集合元素并未发生变化)
- Return the difference of two or more sets as a new set.
s1 = {123,'alex','xhg',888,'english',(),''} s2 = {'alex',888,'','lb','math'} print(s1.difference(s2))#s1集合里不同于s2集合里的元素(最终输出的元素是s1集合里的元素) #执行结果 {123, 'xhg', (), 'english'} print(s2.difference(s1))#s2集合里不同于s1集合里的元素(最终输出的元素是s2集合里的元素) #执行结果 {'lb', 'math'}
求差集还可以用符号来表示:
s1 = {123,'alex','xhg',888,'english',(),''} s2 = {'alex',888,'','lb','math'} print(s1 - s2) print(s2 - s1) #执行结果 {123, 'xhg', (), 'english'} {'math', 'lb'}
5.difference_update
- 求差集之后对集合做更新
- Remove all elements of another set from this set.
s1 = {123,'alex','xhg',888,'english',(),''} s2 = {'alex',888,'','lb','math'} print(s1.difference_update(s2)) print(s1) print(s2) #执行结果 None {'english', 'xhg', (), 123} {'', 'math', 'lb', 888, 'alex'} #从执行结果中,我们可以看出来 s1.difference_update(s2) 是将s1集合中同s2集合中元素相同的移除,s1集合内元素进行了更新
6.discard
- 删除目标集合中的指定元素,若该元素不存在,则不会报错
- Remove an element from a set if it is a member.
- If the element is not a member, do nothing.
s1 = {'alex',888,'','lb','math'} s1.discard('alex') print(s1) #执行结果 {'', 'lb', 888, 'math'}
7.intersection
从数学角度来讲,就是求交集(但是各自集合元素并未发生变化)
s1 = {123,'alex','xhg',888,'english',(),''} s2 = {'alex',888,'','lb','math'} print(s1.intersection(s2)) #求集合 s1 与集合 s2 共有的元素 #执行结果 {'', 'alex', 888}
求交集还可以用符号来表示:
s1 = {123,'alex','xhg',888,'english',(),''} s2 = {'alex',888,'','lb','math'} print(s1 & s2)
8.intersection_update
(同difference_update)
求交集之后对集合做一个更新
s1 = {123,'alex','xhg',888,'english',(),''} s2 = {'alex',888,'','lb','math'} s1.intersection_update(s2) print(s1,s2) #执行结果 {'', 888, 'alex'} {'', 'math', 888, 'lb', 'alex'} #从执行结果中,我们可以看出来 s1.intersection_update(s2) 是将s1集合s2集合中元素相同的更新放入s1集合
9.isdisjoint
- 比较两个集合是否有共有元素,如果没有的话返回 True,否则返回 False
- Return True if two sets have a null intersection.
s1 = {123,'alex','xhg',888,'english',(),''} s2 = {'lb','math'} print(s1.isdisjoint(s2)) #执行结果 True
10.issubset
- 判断一个集合是否为另一集合的子集
- Report whether another set contains this set.
s1 = {123,'alex','xhg',888,'english',(),''} s2 = {'xhg',888,'english'} print(s2.issubset(s1))#判断集合s2是否为集合s1的子集 #执行结果 True
11.issuperset
判断一个集合是否为另一集合的父集
s1 = {123,'alex','xhg',888,'english',(),''} s2 = {'xhg',888,'english'} print(s1.issuperset(s2))#判断集合s1是否为集合s2的父集 #执行结果 True
12.pop
- 随机删除集合中的元素
- Remove and return an arbitrary set element.
- Raises KeyError if the set is empty.
s1 = {123,'alex','xhg',888,9} s1.pop() print(s1)
13.remove
- 删除目标集合中的指定元素,若该元素不存在,则会报错(所以通常删除集合中指定元素,不用remove,选择discard)
- Remove an element from a set; it must be a member.
- If the element is not a member, raise a KeyError.
s1 = {123,'alex','xhg',888,'english'} s1.remove(666) print(s1)
14.symmetric_difference
- Return the symmetric difference of two sets as a new set.
- 从数学角度上来说,是求交叉补集
s1 = {123,'alex','xhg',888,'english'} s2 = {123,'alex','xhg','love'} print(s1.symmetric_difference(s2)) #执行结果 {'love', 888, 'english'} #从结果上来看,交叉补集就是两个集合除去公共部分外,各自剩下的元素组成的集合
15.symmetric_difference_update
s1 = {123,'alex','xhg',888,'english'} s2 = {123,'alex','xhg','love'} s1.symmetric_difference_update(s2) print(s1,s2) #执行结果 {'love', 'english', 888} {'xhg', 123, 'alex', 'love'} #从执行结果中,我们可以看出来 s1.symmetric_difference_update(s2) 是将两集合求交叉补集并将结果更新放入s1集合
16.union
- 从数学角度上来说,是求并集
- Return the union of sets as a new set.
s1 = {123,'alex','xhg',888,'english'} s2 = {123,'alex','xhg','love'} print(s1.union(s2)) #执行结果 {'english', 'love', 888, 123, 'alex', 'xhg'}
求并集还可以用符号来表示:
s1 = {123,'alex','xhg',888,'english'} s2 = {123,'alex','xhg','love'} print(s1 | s2) #执行结果 {'english', 'love', 888, 123, 'alex', 'xhg'}
17.update
- Update a set with the union of itself and others.
s1 = {123,'alex','xhg',888,'english'} s2 = {123,'alex','xhg','love',666} print(s1.update(s2)) print(s1) #执行结果 {'xhg', 'love', 888, 'english', 'alex', 666, 123}