- 视频来源:python视频 900集
084.集合之交集并集差集
- 产生集合的两种方法——使用set直接add,逐渐添加元素;或可以使用列表将元素暂存再转化为集合。
- 其他的集合符号操作
in符号——6 in set1
,in操作支持,如果元素在集合中返回True
not in符号——6 not in set1
,同理也支持
==符号——set1==set2
,如果两个集合中的元素都一样,则返回True;反之返回False
!=符号——同理也支持。 - 两个集合之间的操作:
set1 = {1,2,3,4}
set2={1,2,3,4,5}
+操作——set3 = set1 + set2
,不被支持的操作
*操作——set3 = set1 * 2
,不被支持的操作
-操作——set4 = set2 - set1
,支持,返回集合2中有集合1中没有的元素集合或返回空集合,就是差集操作
&操作——set3 = set2 & set1
交集操作,支持,可以返回两个集合共有的元素
|操作——set4 = set1 | set2
并集操作,支持,返回两个集合的全部元素 - 差集函数——difference(),找出两个集合的差集
set1.difference(set2)——找出集合1中有而集合2中没有的元素
set2.difference(set1)——找出集合2中有而集合1中没有的元素
set3 = set2.difference(set1)
print(set3)
# 输出:
# {5}
set3 = set1.difference(set2)
print(set3)
# 输出:
# set()
-
交集函数——intersection(),找出两个集合共有的元素
set5 = set1.intersection(set2)
-
并集的操作——union(),将两个集合的全部内容放到一个集合中
set4 = set2.union(set1)
-
应用:找出两个列表的不同元素
我的答案:(见085对称差集)
l1 = [5,1,2,9,0,3]
l2 = [7,2,5,7,9]
set1 = set(l1)
set2 = set(l2)
set3 = (set1 - set 2) | (set2 - set1)
print(set3)
- 应用:找出两个列表的共同元素
list1 = [5,1,2,9,0,3]
list2 = [7,2,5,7,9]
set1 = set(list1)
set2 = set(list2)
set3 = set1.intersection(set2)
print(set3)
085.集合对称差和总结
- 对称差集:(两个集合的所有不同的元素)有以下两个表示方法
result = (s1 | s2) - (s1 & s2)
result = s1 ^ s2
result = s1.symmatric_difference(s2)
- difference_update()
set1.difference_update(set2)——求差集并更新set1,将原来的set1与set2的差集赋值给set1 - 同理可以理解union_update()、intersection()、symmatric_difference_update()的用法及含义。
- 集合总结:
关键字:set
常用的领域:去重
符号:- & | ^
内置函数:增加:add()、update();删除:remove()、discard()、pop()、clear();运算:difference()、intersection()、union()、symmatric_difference()
086.可变和不可变
- 不可变:对象所指向的内存中的值是不可以改变的。
整型int、字符串string、浮点数float、元组类型tuple
每次创建这类数据时,python底层会先开辟空间将内容存放,再将变量指向该地址。
s1 = 'abc'
print(id(s1))
s1 = 'abcd'
print(id(s1))
# 显示结果:
# 1578301227312 1578301308784
-
可变:该对象指向的值是可以改变的
可变类型有:字典dict、列表list、普通的set -
可变:地址不变里面内容改变,list dict set
-
不可变:只要内容改变,必须改变地址,int str float tuple frozenset
-
老师让自己私下测定的集合,frozenset是属于不可变的类型。测试代码如下。
-
集合的内置函数之frozenset()
fset = frozenset(set1)
——将集合set1冻结,集合内的元素无法再删除或添加。
087.类型转换
- 类型转换:int()、str()、list()、tuple()、dict()、set()
- str可以转成:整型(当str是数字的时候
'8'
),列表、集合、元组 - 整型可以转字符串、列表可以转变为字符串【
str(['a','b,'c'])
–>[‘a’,‘b’,‘c’]】、集合元组字典浮点数都可以转变为字符串 - 列表可以转成set、也可以转元组、转字典有条件(要求包括两个元素的键值对)
- 集合能转列表
- 元组能转列表
- 字典能转列表,只将key放到列表中,类似字典的keys()方法。
088.pycharm简介
老师粗略介绍了pycharm界面的设置等,看视频吧,记笔记就算了。
创建文件点击file的时候要指定格式,选择python文件后直接输入文件名称就可以。
089.项目结构和函数简介
- 建立python的包
项目中涉及到很多的py文件的时候,使用package很好;代码比较少的时候直接建立py文件就可以。 - 函数的引入——对重复的代码提供调用,提高代码的复用性,强化代码的模块性,提高代码的重复利用率。
- 定义函数:def
必须使用关键字,函数体注意缩进,函数名和括号是绑定的。
def 函数名 (参数1,参数2):
函数体
- 实战1——定义函数,完成随机数的产生
improt random
# 注意标准化的代码书写,要求引入和方法定义之间最少有两个空行
def get_list ():
for i in range(10):
a = random.randint(1,20)
print(a)
明天继续,今天少了点哈哈,在意料之中,明天多补一点吧,python基础就有200集,这才不到100集用了12天。。。