集合
集合、list、tuple、dict一样都可以存放多个值,但是集合主要用于:去重、关系运算
定义
在{}内用逗号分隔开多个元素,集合具备以下三个特点:
1、每个元素必须是不可变类型
2、集合内没有重复的元素
3、集合内元素无序
s={1,2} # s=set({1,2})
s={1,[1,2]} # 集合内元素必须为不可变类型
s={1,'a','z','b',4,7} # 集合内元素无序
s={1,1,1,1,1,1,'a','b'} # 集合内元素没有重复
print(s)
s={} # 默认是空字典
print(type(s))
定义空集合
s=set()
print(s,type(s))
类型转换
set({1,2,3})
res=set('hellolllll')
print(res)
print(set([1,1,1,1,1,1]))
print(set([1,1,1,1,1,1,[11,222]]) # 报错
print(set({'k1':1,'k2':2}))
内置方法
取交集:两者共同的好友
friends1 = {"zero","kevin","jason","egon"}
friends2 = {"Jy","ricky","jason","egon"}
res=friends1 & friends2
print(res)
print(friends1.intersection(friends2))
取并集/合集:两者所有的好友
取并集/合集:两者所有的好友
friends1 = {"zero","kevin","jason","egon"}
friends2 = {"Jy","ricky","jason","egon"}
res=friends1 & friends2
print(friends1 | friends2)
print(friends1.union(friends2))
###取差集:取friends1独有的好友
friends1 = {"zero","kevin","jason","egon"}
friends2 = {"Jy","ricky","jason","egon"}
print(friends1 - friends2)
print(friends1.difference(friends2))
取friends2独有的好友
friends1 = {"zero","kevin","jason","egon"}
friends2 = {"Jy","ricky","jason","egon"}
print(friends2 - friends1)
print(friends2.difference(friends1))
###对称差集: 求两个用户独有的好友们
friends1 = {"zero","kevin","jason","egon"}
friends2 = {"Jy","ricky","jason","egon"}
print(friends1 ^ friends2)
print(friends1.symmetric_difference(friends2))
###父子集:包含的关系
s1={1,2,3}
s2={1,2,4}
print(s1 > s2)
print(s1 < s2)
##去重
只能针对不可变类型去重
print(set([1,1,1,1,2]))
无法保证原来的顺序
l=[1,'a','b','z',1,1,1,2]
l=list(set(l))
print(l)
###长度
s={'a','b','c'}
len(s)
###成员运算
'c' in s
##其他内置方法
###需要掌握的内置方法1:discard
s.discard(4) # 删除元素不存在do nothing
print(s)
s.remove(4)# 删除元素不存在则报错
###需要掌握的内置方法2:update
s.update({1,3,5})
print(s)
###需要掌握的内置方法3:pop
res=s.pop()
print(res)
###需要掌握的内置方法4:add
s.add(4)
print(s)
#字符编码
##三大核心硬件
所有软件都是运行硬件之上的,与运行软件相关的三大核心硬件为cpu、内存、硬盘,我们需要明确三点:
1、软件运行前,软件的代码及其相关数据都是存放于硬盘中的
2、任何软件的启动都是将数据从硬盘中读入内存,然后cpu从内存中取出指令并执行
3、软件运行过程中产生的数据最先都是存放于内存中的,若想永久保存软件产生的数据,则需要将数据由内存写入硬盘
##文本编辑器读取文件内容的流程
阶段1、启动一个文件编辑器(文本编辑器如nodepad++,pycharm,word)
阶段2、文件编辑器会将文件内容从硬盘读入内存
阶段3、文本编辑器会将刚刚读入内存中的内容显示到屏幕上
##python解释器执行文件的流程
阶段1、启动python解释器,此时就相当于启动了一个文本编辑器
阶段2、python解释器相当于文本编辑器,从硬盘上将test.py的内容读入到内存中
阶段3、python解释器解释执行刚刚读入的内存的内容,开始识别python语法
##python解释器与文件本编辑的异同如下
相同点:前两个阶段二者完全一致,都是将硬盘中文件的内容读入内存,详解如下
python解释器是解释执行文件内容的,因而python解释器具备读py文件的功能,这一点与文本编辑器一样
不同点:在阶段3时,针对内存中读入的内容处理方式不同,详解如下
文本编辑器将文件内容读入内存后,是为了显示或者编辑,根本不去理会python的语法,而python解释器将文件内容读入内存后,可不是为了给你瞅一眼python代码写的啥,而是为了执行python代码、会识别python语法)
##字符编码介绍
###什么是字符编码?
人类在与计算机交互时,用的都是人类能读懂的字符,如中文字符、英文字符、日文字符等而计算机只能识别二进制数
###字符编码的应用
我们学习字符编码就是为了存取字符时不发生乱码问题
1、内存中固定使用unicode无论输入任何字符都不会发生乱码
2、我们能够修改的是存/取硬盘的编码方式,如果编码设置不正确将会出现乱码问题。乱码问题分为两种:存乱了,读乱了
2.1 存乱了:如果用户输入的内容中包含中文和日文字符,如果单纯以shift_JIS存,日文可以正常写入硬盘,而由于中文字符在shift_jis中没有找到对应关系而导致存乱了
2.2 读乱了:如果硬盘中的数据是shift_JIS格式存储的,采GBK格式读入内存就读乱了
###存乱了:解决方法是
编码格式应该设置成支持文件内字符串的格式
###取乱了:解决方法是
解决方法是,文件是以什么编码格式存如硬盘的,就应该以什么编码格式读入内存