day7 - 集合和字符串

    科技2026-04-15  3

    day7 - 集合和字符串

    集合

    什么是集合(set)

    ''' 集合是容器型数据类型,将{}作为容器的标志,里面多个元素用逗号隔开:{元素1, 元素2, 元素3, 元素4, 。。。。} 集合是可变的,无序的 元素: 不可变的,唯一的 ''' # 1) 空集合 x = {} # 空字典 s1 = set () # 空集合 print(type(x), type(s1)) # <class 'dict'> <class 'set'> print(s1) # set() # 2) 元素是不可变的 s2 = {10, 'abc', (1, 2)} print(s2) # {(1, 2), 'abc', 10} # 报错,列表可变不能作为集合元素 # s3 = {10, 'abc', [1, 2]} # TypeError: unhashable type: 'list' # 3) 元素是唯一的 s4 = {10, 20, 30, 40, 10, 10} print(s4) # {10, 20, 30, 40} # 集合去重 names = {'张三', '李四', '老王', '李四', '张三', '张三'} names == list(set(names)) print(names) nums = {2, 30, 4, 10, 10, 2, 50, 6, 30} nums = list(set(nums)) print(nums) # 4)集合是无序的 print({1, 3, 5} == {5, 1, 3}) # True # 2.集合的增删改查 # 1) 查 - 集合只能遍历 # 补充: 通过for循环遍历无序序列的时候,都是先将序列转换成列表,然后遍历列表 games = {'QQ炫舞', '扫雷', '贪吃蛇', '我的世界', '侠盗猎车', '红警'} for x in games: print('x:', x) # 2) 增 # 集合.add(元素) - 在集合中添加指定元素 # 集合.update(序列) - 将序列中所有的元素添加到集合中 games.add('英雄联盟') print(games) games.update({'开心消消乐', '王者荣耀'}) print(games) games.update('abc') print(games) # {'红警', '贪吃蛇', 'QQ炫舞', '英雄联盟', '王者荣耀', '扫雷', '侠盗猎车', '开心消消乐', 'a', 'c', 'b', '我的世界'} # 3) 删 # 集合.remove(元素) - 删除集合中指定的元素 # 集合.discard(元素) - 删除集合中指定的元素(元素不存在不会报错) # 4) 改 - 先删除原来的, 再添加新的 games = {'QQ炫舞', '扫雷', '贪吃蛇', '我的世界', '侠盗猎车', '红警'} games.remove('扫雷') games.add('部落冲突') # 3)数学集合运算 # python中的集合支持数学中的集合运算: &(交集)丶|(并集)、-(差集)、^(对称差集) set1 = {1, 2, 3, 4, 5, 6, 7} set2 = {4, 5, 6, 7, 8, 9, 10} # 2) 集合1 | 集合2 - 合并两个集合产生一个新的集合 print(set1 | set2) # {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} # 3) 集合1 - 集合2 - 集合1去掉包含在集合2中剩下的元素 print(set1 - set2) # {1, 2, 3} print(set2 - set1) # {8, 9, 10} # 4) 集合1 ^ 集合2 - 将两个集合合并后去掉公共部分 print(set1 ^ set2) # {1, 2, 3, 8, 9, 10} # 5) # 集合1 > 集合2 - 判断集合2是否是集合1的真子集 # 集合1 < 集合2 - 判断集合1是否是集合2的真子集 # 集合1 >= 集合2 - 判断集合2是否是集合1的子集 # 集合1 <= 集合2 - 判断集合1是否是集合2的子集 print({1, 2, 3, 4} > {1, 2}) # True print({1, 2, 3, 4} > {1, 2, 3, 4}) # False print({1, 2, 3, 4} >= {1, 2, 3, 4}) # True print({1, 2, 3, 4} >= {1, 2}) # True print({100, 200, 300} > {1, 2}) # False

    字符串和字符

    # 1.什么是字符串(str) """ 字符串是容器型数据类型,将''、""、''''''、""""""作为容器的标志里面的每一个基本符号就是字符串的元素 字符串是不可变的(不支持增删改);字符串是有序的(支持下标操作) 元素:引号里面的每个基本单元就是字符串的元素,又叫字符(python中只有字符的概念没有字符对应的类型,一般直接使用长度是1的字符串来表示字符) """ # 1)空串 s1 = '' s2 = "" s3 = '''''' s4 = """""" print(s1, s2, s3, s4) print(type(s1), type(s2), type(s3), type(s4)) # <class 'str'> <class 'str'> <class 'str'> <class 'str'> # 2)''、"" 与 ''''''、""""""的区别 # ''、"" - 字符串中不能直接换行 s5 = '氨基酸jss232-=12asf束带结发' s6 = ''' 床前明月光, 疑是地上霜. 举头望明月, 低头思故乡. ''' print(s5) print(s6) # 3)字符串有序 print('abc' == 'cba') # False # 2.字符 """ 字符分为普通字符和转义字符两种: 1)转义字符 在特定的一个或者多个符号前加\让符号具有特殊功能或者特殊意义。那么这种带有\字符就是转义字符: \n - 换行 \t - 水平制表符(相当于按一下tab键) \' - 表示一个普通的单引号 \" - 表示一个普通的双引号 \\ - 表示一个普通的反斜杠 注意:任意一个转义字符长度都是1 2)普通字符 除了转义字符以外的字符都是普通字符,普通字符在字符串中表示这个符号本身,包括:汉字、数字、字母、符号、表情符号等.... 'shdj'、'收到货积分'、'shd23'、'%……&*('、'🙂😿❀' """ # 特殊的转义字符-编码字符:\u四位的十六进制数 - 表示16进制数对应的编码值对应的字符 str1 = '\ta\'bc\n1"23' print(str1) str2 = "hello' w\"orld" print(str2) str3 = '123\\n456' print(str3) # 123\n456 str4 = 'abc\u1234' print(str4) # abcሴ str5 = 'abc\u4fa5' print(str5) # abc侥 # 2.字符编码 """ 1)什么是字符编码 计算机在存储数据的时候只能存数字(存的数字二进制补码),为了能够让计算机存储字符,我们给每一个字符都对应一个固定的数字,那么每个字符对应的固定的数字就是这个字符的编码值 2)字符编码表 - 记录字符和数字之间一一对应关系的表就是字符编码表 常见的字符编码表有两种:ASCII码表、Unicode编码表(python采用的是Unicode编码表) a. ASCII码表 ASCII码表总共有128个字符对应的编码,主要包含的是美国的通用符号其中包括:英文标点符号、数字字符、字母字符以及其他的一些符号 ASCII码表中,数字字符在字母的前面,大写字母在小写字母的前面,大写字母和小写字母之间有间接 b. Unicode编码表 Unicode编码表包含ASCII码表 中文编码范围:4e00 ~ 9fa5 """ # 1)编码字符: \u4位的16进制编码值 print('\u1100') # ᄀ print('\u11ef') # ᇯ print('\u0f00\u0f03') # ༀ༃ print('\u28a0 \u28ff') # ⢠ ⣿ print('\u4e00 \u9fa5 \u5af1') # 一 龥 嫱 # 2)chr(编码值) - 获取编码值对应的字符 print(chr(0x4e00), chr(19968)) # 一 一 print(chr(97), chr(65)) # a A # 打印所有的中文字符 count = 0 for x in range(0x4e00, 0x9fa5+1): print(chr(x), end=' ') count += 1 if count % 25 == 0: print() # 3)ord(字符) - 获取字符对应的编码值(返回的是十进制数) print(ord('余'), ord('婷')) # 20313 23159 print(hex(20313), hex(23159)) # 0x4f59 0x5a77

    字符串操作

    # 1.获取字符 # 字符串获取字符和列表获取元素的方法一样 # 1)获取单个字符 sentence = '死亡如风,常伴吾身!' print(sentence[2], sentence[-8]) # 如 如 # 2)字符串切片 sentence2 = 'good good study! day day up!' print(sentence2[5:-2]) # 'good study! day day u' print(sentence2[1:-2:-2]) # '' print(sentence2[::-1]) # '!pu yad yad !yduts doog doog' # 3) 遍历 for x in sentence2: print('x:', x) for index, item in enumerate(sentence2): print(index, item, '============') for x in range(len(sentence2)): print(x, sentence2[x]) # 2.加法和乘法 print('abc' + '123') # 'abc123' print('you see see you!' + 'one day day!') # 'you see see you!one day day!' print('abc'*3) # 'abcabcabc' # 3.比较大小 # 两个字符串比较大小:比较第一对不相等的字符编码值的大小 """ char 'a' <= char <= 'z' - 小写字母 'A' <= char <= 'Z' - 大写字母 'a' <= char <= 'z' or 'A' <= char <= 'Z' - 字母 '0' <= char <= '9' - 数字字符 '\u4e00' <= char <= '\u9fa5' - 中文字符 """ print('abc' > 'XYZMN') # True print('abc' > '你好!') # False print('A' > '0') # 练习1:输入一个字符串,统计字符串中小写字母的个数 str1 = 'ajs929jskJA89===' count = 0 for x in str1: if 'a' <= x <= 'z': count += 1 print(count) # 6 # 练习2:输入一个字符串,删除字符串中所有的中文字符 # nis耗时ss==AHJ看 -> nisss==AHJ str2 = 'nis耗时ss==AHJ看' str3 = '' for x in str2: if '\u4e00' <= x <= '\u9fa5': continue str3 += x print(str3) # nisss==AHJ
    Processed: 0.011, SQL: 12