一、集合
1.什么是集合(set)
1)集合是容器型数据类型;将{}作为容器的标志,里面多个元素用逗号隔开:{元素1,元素2,元素3·····}
2)可变的;无序的(不支持下标操作,比较大小时不会有顺序差别)
3)元素的要求:
a.必须是不可变类型的数据
b.元素是唯一的(自动去重)
#注意:空集合
s1=set()
证明是空集合:print(len(s1),type(s1)) #0<class ‘set’>
#集合无序
print({10,20,30}=={30,20,10}) #True
#元素是不可变类型的数据
S2={10,‘abc’,23.9,(1,2)}
print(s2)
#S2={10,‘abc’,23.9,[1,2]} #报错!列表是可变数据不能作为集合元素
#元素是唯一的
S4={10,20,30,10,20,10}
print(S4) #{10,20,30}
2.增删改查(了解)
1)查 — 只能遍历
s5={29,80,56,324}
for x in s5:
print(‘x:’,x) 顺序可能不同但是不影响
2)增
集合.add( 元素) — 将元素添加到集合中
S5.add(100)
print (S5) #{100,324,80,56,29}
3)删
集合.remove(元素) — 删除指定元素,元素不存在报错
集合.discard(元素) —删除指定元素,元素不存在不报错
S5.remove(80)
print(S5) #{100,324,56,29}
S5.discard(56)
print(S5) #{100,324,29}
#S5.discard(200)
#S5.remove(200) #报错!
4)改 — 没有改的语法,如果要改就删除旧的,添加新的
二、数学集合运算
python中集合支持的数学集合运算:并集(|),交集(&),差集(—),对称差集(^),子集(>=,<=),真子集(>,<)
1.并集(|)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lXvxhFkm-1639055355094)(C:\Users\Administrator\Desktop\QQ图片20211209114223.png)]
2.交集(&)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1D8UVqyh-1639055355095)(C:\Users\Administrator\Desktop\QQ图片20211209114315.png)]
3.差集(—)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7PY78QIB-1639055355096)(C:\Users\Administrator\Desktop\QQ图片20211209114423.png)]
4.对称差集(^)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7ranzhBZ-1639055355100)(C:\Users\Administrator\Desktop\QQ图片20211209114503.png)]
#eg:
A={1,2,3,4,5,6,7}
B={5,6,7,8,9}
print(A|B) #{1,2,3,4,5,6,7,8,9}
print(A%B) #{5,6,7}
print(A-B) #{1,2,3,4}
print(B-A) #{8,9}
print(A^B) 两个集合合并去掉公共部分 #{1,2,3,4,8,9}
5.子集和真子集,集合中不存在大于小于
{1,2,3}的子集有:{}、{1}、{2}、{3}、{1,2}、{2,3}、{1,3}、{1,2,3}
{1,2,3}的真子集有:{}、{1}、{2}、{3}、{1,2}、{2,3}、{1,3}
#如何判断是否是集合的真子集?
print({1,2,3}>{0}) 看集合{0}是不是集合{1,2,3}的真子集 #False
print({1,2,3}>{1}) #True
#如何判断是否是集合的子集?
print({1,2,3}>={0}) 看集合{0}是不是集合{1,2,3}的子集 #False
三、认识字符串(str)
字符串是容器型数据类型:将’ ‘、" “、”" “” “”、’’ ‘’ ''作为容器的标志,里面的每一个符号就是他的一个元素。
字符串不可变;字符串有序
字符串元素:引导中的每一个符号都是字符串的元素,又叫字符。
str1=‘abc’
str2=’‘abc’’
str3=’’‘abc’’’
str4=’’’’’‘abc’’’’’’
print(type(str1),type(str2),type(str3),type(str4))
str5=‘123\nabc’
1)#单引号和双引号换行需要用以上模式
#三引号开头可以直接换行
2)字符— 字符串的元素
#普通字符:
str1=‘sdihcA’
str2=‘中文’
str4=‘123sh’
只要可以放进去的就是字符,放进去是什么东西里面就是什么
3)字符分为普通字符和转移字符两种,普通字符在字符串中表示符号本身的字符
str1=’\tabc\n123\use00’
print(str1)
def func():
‘’’
文档注释
‘’’
pass
四、字符和字符编码
‘a’ --> 字符 ‘abc’—>字符串
1.字符 — 字符串的每个元素
#字符分为普通字符和转义字符
#1)转义字符 在特定的一些符号前加\来表示特殊功能或者特殊意义的符号
常用的转义字符:
\n — 换行(相当于按回车的功能)
\t — 水平制表符(相当于按tap键)
\ ’ — 一个普通的单引号
\ ‘’ — 一个普通的双引号
\ \ — 一个普通的反斜杠
#\u4位的16进制数 — 编码字符
#It’s ok
str1=‘’it‘s ok’‘
print(str1)
#str1=’it\‘s ok’
print(str1)
#c:\Users\test\name\wangjing\aaa.txt
path=‘c:\Users\ \test\ \name\wangjing\ \aaa.txt’
print(path)
2)R字符串 R语法
#如果在字符串的最前面加r或者R可以让字符串中所有的转义字符功能消失,每个符号都会变成普通字符
str1=R’\tabc\n123’mn’
print(str1) #\tabc\n123’mn
str2=‘abc\ u5a5f’
print(str2)
五、字符编码
1.计算机存储数据的原理
计算机只具备存储数字的能力
'abc’每一个符号关联一个固定的数字
2.字符编码
为了能够让计算机存储文字信息,给每一个符号对应了一个固定的数字,每次需要存储需要文字符号的时候,就存储这个符号对应的数字。
这个数字就是这个符号的编码值。
#‘a’+1=98
3.编码表
保存不同符号在计算机中对应的编码值的表叫做编码表
1)ASCII码表
只有128个符号(美国)
分布:数字在大写字母的前面,大写字母在小写字母的前面,大写字母和小写字母之间有间隙。
2)Unicode编码表(python)统一码,万国码
是ASCII的扩展,Unicode编码表中包含了ASCII码表。
包含了世界上所有的国家所有的民族的所有的符号,又叫万国码。
要记住中文范围:4e00~9fa5
4.python对编码值的使用
1)chr函数
chr(编码值) — 获取编码值(数字)对应的字符()
print(chr(97)) #a
print(chr(0x5e00))
#打印所有中文:
num=0
for x in range(0x4e00,0x9fa5+1):
print(chr(x),end=’’)
num+=1
if num%30==0
print()
print(num)
2)ord函数
ord(字符) —获取字符对应的编码值()
print(ord(‘汪’),ord(‘京’))
#27754 20140
3)编码字
\u4的16进制数 — 创建一个字符,字符就是4的16进制数作为编码值对应的字符
str1=’\u0061\ u4f59\ u5a77’
print(str1)
六、进制
#数字常见的表现方式有四种:二进制、八进制、十进制、十六进制
1.十进制
基数:组成这个数字的基本结构:1,2,3,4,5,6,7,8,9
表示方式:直接写
转换方法:print(其他进制的数)
print(10,123)
print(int(‘12’)) #12
print(int(‘12’,base=8)) #10(12)
print(0o12) #10
print(0x4e00) #19968
2.二进制
基数:0,1 不能出现01以外的数字
表示方式:加前缀0b、0B
转换方法:bin(其他进制的数)
print(0b1100) #12
print(12+1) #13
print(0b1100+1) #13
print(bin(12)) #0b1100
print(bin(42)) #0b101010
3.八进制
基数:0、1、2、3、4、5、6、7
表示方式:加前缀0o、0O
转换方式:oct(其他进制的数据)
#0o56-5*81+6*80=40+6=46
print(0o56) #46
4.十六进制
基数:0 1 2 3 4 5 6 7 8 9 A B C D E F
表示方式:加前缀0x、0X
转换方式:hex(其他进制的数)
print(abc) #报错
#0xabc – a162+b*161+c16^0=10* * 256+11*16+12=2748
print(0xabc) #2748
#28291是哪个字符的编码
print(chr(28291))
print(’\ u6e83’)
七.字符串作为容器的操作只有一个
因为不可变,只有一个查:查就是获取字符,与列表获取元素对应的语法一模一样的。
str1=‘abc123’
print(str[2])
print(str1[1:]) #‘bc123’
print(str[1: -1 : 2]) #‘b1’
print(str1[3:1:2]) #’ ’
for x in str1:
print(‘x:’,x)
#每一个有效转义字符的长度都是1
str2=’\ ta\ u4e00bc \ n123\ \ ’
print(str2[1])
print(str2[3])
str2=’\ ta\ u4e00bc \ n123\ \ ’
print(str2[2])
print(str2[9])
2.in和not in
#字符串1 in 字符串2 — 判断字符串2中是否包含字符串1(判断字符串1是否是字符串2的子串)
print('ab’in ‘abc’)
print('a’in ‘abc’)
print(str[2])
print(str1[1:]) #‘bc123’
print(str[1: -1 : 2]) #‘b1’
print(str1[3:1:2]) #’ ’
for x in str1:
print(‘x:’,x)
#每一个有效转义字符的长度都是1
str2=’\ ta\ u4e00bc \ n123\ \ ’
print(str2[1])
print(str2[3])
str2=’\ ta\ u4e00bc \ n123\ \ ’
print(str2[2])
print(str2[9])
2.in和not in
#字符串1 in 字符串2 — 判断字符串2中是否包含字符串1(判断字符串1是否是字符串2的子串)
print('ab’in ‘abc’)
print('a’in ‘abc’)
print('ab’in ‘abc’)