学习日志2021.1.28
-
元组
元组是容器(序列),()容器标志,元组不可变(不支持增删改查),有序(支持下标操作),
元素要求和列表相同,元组可以视为不可变的列表
t1 = (1, 2, True, 'asd', [], {'sd': 2}) print(t1)
查
和列表相同
t1 = (1, 2, True, 'asd', [], {'sd': 2}) l1 = list(t1) print(l1[1], t1[1])
元组的特有性质
只有一个元素的元组
t2 = (1,) # 必须加逗号 print(type(t2))
在没有歧义的情况下,元组的括号可以省略
t3 = 1, 2, 3 print(type(t3)) x, y, z = t3 print(x, y, z)
不等位赋值,按照数量将元组分段,除了*全部是一个元素(不等位时有且只有一个)
t4 = ('a', 1, 34, 56, 34) x1, x2, *x3, x4 = t4 print(x1, x2, x3, x4)
-
集合 set
集合是容器(序列),可变的、无序的。
元素要求:不可变的、唯一的
x = {} # 空字典 y = set() # 空集合
集合无序 且元素唯一
print({1, 2, 3} == {3, 2, 1}) print({1, 1, 1, 2, 3, 4, 5}) # 此特性可以用于去重
数学集合运算:交集、并集、差集、对称差集、子集真子集
s1 = {1, 2, 3, 4, 5} s2 = {4, 5, 6, 7, 8} # 交集 & 并集 | 差集直接相减 print(s1 - s2) # 对称差集 ^ 等于 A|B - A&B print(s1 ^ s2)
用三个集合表示三门学科的学生姓名
a.求选课学生共有多少人
b.求只选了第一个学科的人的数量和对应的名字
c.求只选了一门学科的学生的数量和对应的名字
d.求只选了两门学科的学生的数量和对应的名字
e.求选了三门学科的学生的数量和对应的名字
python = {'stu1', 'stu4', 'stu5', 'stu6', 'stu8', 'stu10', 'stu11'} java = {'stu2', 'stu4', 'stu7', 'stu8', 'stu9', 'stu10'} h5 = {'stu1', 'stu3', 'stu7', 'stu8', 'stu10', 'stu11'} a = python | java | h5 print(f'选课总共{len(a)}人') b = python - java - h5 print(f'只选python{len(b)}人,分别是:{b}') c = python ^ java ^ h5 - (python & java & h5) print(f'只选一门学科的有{len(c)}人,分别是{c}') e = python & java & h5 d = a - c - e print(f'选了两门的有{len(d)}人,分别是{d}') print(f'三门全选有{len(e)}人,分别是{e}')
-
字符串 str
字符串是容器(序列)’’、""、"""、""""""是容器的标志
每一个符号都是字符串元素(字符串元素又叫字符)
字符串、元组不可变,所以相同的字符串、元组用的同一地址(所有的可变都是产生新的字符串)
a = '''a b''' print(a) a = '♥🐎💃💃💃🚩'
转义字符
在特定符号前加\表示特殊意义
# \n 换行 # \t tab # \' 表示一个单引号 # \" 表示一个双引号 # \\ 表示一个\ # \u四位的十六进制编码 将编码值转换成字符 str = "\u4e20" print(str)
-
字符编码
-
字符在计算级的存储问题
计算级只能存数字,所以为了能够保存字符,给每一个字符对应一个固定数字
这个数字就是字符的编码值
-
编码表
记录字符和编码值一一对应的表格,常见编码表:ASCII、Unicode编码表
ASCII需要记住大概布局
Unicode是ASCII编码表的补充,中文的编码范围:4e00 ~ 9fa5
-
编码值的使用
# \u编码值 # chr(编码值) 获取相应字符 # for x in range(0x4e00,0x9fa5): # print(chr(x),end='') # ord(字符) 获取字符的编码值,输出为十进制 print(hex(ord('李')), hex(ord('博')))
-
字符串比较大小
两个字符串中位置相同的为一对,比较第一对不相等的字符串的大小
print('你好' > 'hello') """ 数字字符:'0' <= char <= '9' 字母:'A' <= char <= 'Z' or 'a' <= char <= 'z' 中文:'\u4e00' <= char <='\u9fa5' """ pw = input('输入密码') for char in pw: if not ('0' <= char <= '9' or 'A' <= char <= 'Z' or 'a' <= char <= 'z'): print('输入错误') break else: print('密码合法')
-