Day 6
集合(set)
-
说明:
1.集合是容器型数据,用大括号作为容器的标志,元素用逗号隔开(元素1,元素2,元素3,……)
2.集合可变但无序
3.元素必须是不可变数据,并且是唯一的
x = {} # 空字典 s1 = set() # 空集合 print(x, type(x)) # {} <class 'dict'> print(s1, type(s1)) # set() <class 'set'> s2 = {1, 'a', (1, 2)} # 不会报错 s3 = {1, 'a', [1, 2]} # 会报错TypeError: unhashable type: 'list' s4 = {1, 2, 1, 3, 4, 1, 0} print(s4) # {0, 1, 2, 3, 4} print({1, 2, 3} == {2, 1, 3}) # True # 应用:集合去重 name = ['a', 'c', 'e', 'a', 'b', 'b', 'a', 'f'] name = list(set(name)) print(name) # ['b', 'a', 'f', 'e', 'c']
-
相关操作:
1.查 - 查看元素
集合只能遍历(用for遍历无序列表的本质为先将序列转换成列表,然后遍历列表)
2.增 - 添加元素
set.add(element) - 添加指定元素
set.uodate(sequence) - 将序列中所有元素添加到集合中
3.删 - 删除元素
set.remove(element) - 删除指定元素,元素不存在会报错
set.discard(element) - 删除指定元素,元素不存在不会报错
4.改 - 修改元素
集合不支持直接修改元素,但可以先删除在添加到新集合
s5 = {1, 2, 3, 4, 0} for i in s5: print(i) # 0 1 2 3 4 s5.add(8) print(s5) # {0, 1, 2, 3, 4, 8} s5.update([6, 9, 0]) print(s5) # {0, 1, 2, 3, 4, 6, 8, 9} s5.remove(1) print(s5) # {0, 2, 3, 4, 6, 8, 9} s5.discard(7) print(s5) # {0, 2, 3, 4, 6, 8, 9} s5.discard(6) print(s5) # {0, 2, 3, 4, 8, 9}
-
集合的数学运算:
运算符包括:
&(交集)、|(并集)、-(差集)、^(对称差集)
< >(判断真子集)、<= >=(判断子集)
set1 = {1, 3, 5, 7, 8} set2 = {2, 5, 9, 0} print(set1 & set2) # {5} print(set1 | set2) # {0, 1, 2, 3, 5, 7, 8, 9} print(set1 - set2) # {8, 1, 3, 7} print(set2 - set1) # {0, 9, 2} print(set1 ^ set2) # {0, 1, 2, 3, 7, 8, 9}
字符串(str)
-
说明:
1.字符串时容器型数据,用’’、""、’’’’’’、""""""作为容器的标志,里面的每一个基本符号都是字符串的元素
2.字符串是不可变的(不支持增删改)但是有序的(支持下标操作)
3.如果涉及到字符串的改变一定会产生新的字符串
4.引号里面的每个基本单元就是字符串的元素,又叫字符(Python中只有字符的概念,没有字符对应的类型,一般使用长度为1的字符串来代表字符)
5.’’、"“和”"、"""""“的区别是’'和”"中的字符串不能出现换行
# 空字符串(空串) s1 = '' s2 = "" s3 = '''''' s4 = """""" print(type(s1), type(s2), type(s3), type(s4)) # <class 'str'> <class 'str'> <class 'str'> <class 'str'> s5 = 'asjd=jn35978你好' s6 = '''a b,c,d e''' print('abc' == 'bac') # False
-
相关操作:
1.获取字符:(和列表获取元素一致)
2.切片
3.遍历
4.加、乘
5.比较大小:(比较第一对不相同的字符编码值的大小)- 判断字符的性质
`char - 一个字符``
'a' <= char <= 'z' - 判断是否小写
'A' <= char <= 'Z' - 判断是否大写
'a' <= char <= 'z' or 'A' <= char <= 'Z'- 判断是否为字母
'0' <= char <= '9' - 判断是否为数字
'\u4e00' <= char <= '\u9fa5' - 判断是否中文
0 = 'abdigj:slfji' print(s0[-2]) # j s0 = 'good good study!\nday day up!' print(s0[2: -2: 2]) # o odsuy # a a for i in s0: print(i) for index, item in enumerate(s0): print(index, item)
字符
-
说明:
1.在Python中字符分为普通字符和转义字符
2.不是转义字符的字符都是普通字符,包括:汉字、数字、字母
符号、表情符号
3.在特定的一个或多个符号前加 \ 让符号具有特殊功能或特殊意义
几个常用的转义字符
\n - 换行
\t - 水平制表符(相当于一个Tab)
\'、\"、\\ - 分别表示一个单引号(即消除'的原有功能)、一个双引号、一个反斜杠(取消\的转义功能)
print('abc\n123') # abc # 123 print('\tabc') # abc print('abc\'de') # abc'de print("abc'de") # abc'de print('abc"de') # abc"de print("abc\"de") # abc"de print('abc\\nde') # abc\nde
-
特殊的转义字符 - 编码字符
\u + 4位的十六进制数
表示十六进制数的编码值对应的字符
s7 = 'abc\ua130' print(s7) # abcꄰ s8 = '\u4fa5' print(s8) # 侥
字符编码
-
说明:
计算机在储存数据时只能存储数字(数字的二进制补码),为了能够让计算机存储字符,我们给每一个字符对应一个固定的数字,这个数字就是字符对应的编码值
-
字符编码表:
1.记录字符和数字之间意义对应关系的表,常见的有 ASCII码表 和 Unicode编码表
2.ASCII码表有128个字符对应的编码,主要是美国的通用符号:英文标点、数字字符、字母字符以及其他一些符号。其中,数字字符在字母之前,大写字母在小写字母之前,大写字母和小写字母之间有间隙
3.Unicode编码表包含ASCII码表
4.中文字符的编码范围:4e00 ~ 9fa5
chr(编码值)- 获取编码值对应的字符
ord(字符)- 获取字符对应的编码值
print('\u1100') # ᄀ print('\u0f00') # ༀ print('\u28ff') # ⣿ print('\u4e00') # 一 print('\u4e03') # 七 print(chr(0x4e00)) # 一 print(chr(19968)) # 一