day7集合和字符串

    科技2024-10-05  17

    集合和字符串

    1.集合(set)

    1.1 集合 集合是容器型数据类型,将{}作为容器型标志,里面的元素用多个逗号隔开:{元素1, 元素2, 元素3, …} 集合是可变的,无序的 元素:数据类型不可变且唯一

    # 1)空集合 x = {} # 空字典 y = set() # 空集合 # 2)元素是不可变的 s = {10, 'abc', (1, 2)} print(s) # {10, (1, 2), 'abc'} # s = {10, 'abc', [1, 2]} # print(s) TypeError: unhashable type: 'list' # 3)元素是唯一的 s = {10, 20, 10, 30, 40} print(s) # {40, 10, 20, 30} # 4)集合去重 names = ['张三', '李四', '老王', '李四', '张三', '张三'] names = list(set(names)) print(names) # ['老王', '李四', '张三'] # 5)集合是无序的 print({1, 2, 3} == {2, 3, 1}) # True

    1.2 集合的增删改查

    # 1) 查 - 集合只能遍历(通过for循环遍历无序序列的时候,都是先将序列转换成列表,然后遍历列表) games = {'QQ炫舞', '扫雷', '贪吃蛇', '我的世界', '侠盗猎车', '红警'} for x in games: print('x:', x) # 2) 增 # 集合.add(元素) - 在集合中添加指定元素 # 集合.update(序列) - 将序列中所有的元素添加到集合中(序列中的元素是不可变的) games.add('英雄联盟') print(games) games.update({'开心消消乐', '王者荣耀'}) print(games) # 3) 删 # 集合.remove(元素) - 删除指定元素(不存在会报错) # 集合.discard(元素) - 删除指定元素(不存在不会报错) games.remove('贪吃蛇') print(games) games.discard('我的世界') print(games) # 4) 改 # 先删除原来的,在添加新的 games.remove('王者荣耀') games.add('部落冲突') print(games)

    1.3 数学集合运算

    # python中的集合支持数学中的集合运算:&(交集)、|(并集)、-(差集)、^(对称差集)、>、<、>=、<=(判断包含关系) set1 = {1, 2, 3, 4, 5, 6, 7} set2 = {4, 5, 6, 7, 8, 9, 10} # 1) 集合1 & 集合2 - 求两个集合的公共部分 # 2) 集合1 | 集合2 - 合并两个集合产生一个新的集合 # 3) 集合1 - 集合2 - 集合1去掉包含在集合2中剩下的元素 # 4) 集合1 ^ 集合2 - 将两个集合合并后去掉公共部分 print(set1 & set2) # {4, 5, 6, 7} print(set1 | set2) # {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} print(set1 - set2) # {1, 2, 3} print(set1 ^ set2) # {1, 2, 3, 8, 9, 10} # 5)>、<、>=、<= - 判断包含关系

    2.字符串(str)

    2.1字符串 字符串是容器型数据类型,将’’、" “、’’’ ‘’’、”"" “”"作为容器的标志 字符串是不可变的(不支持增删改);字符串是有序的(支持下标操作) 元素:引号里面的每个基本单元就是字符串的元素,又叫字符(python中只有字符的概念,没有字符对应的类型, 一般是直接使用长度是1的字符串来表示字符)

    # 1) 空串 s1 = '' s2 = "" s3 = '''''' s4 = """""" print(type(s1), type(s2), type(s3), type(s4)) # <class 'str'> <class 'str'> <class 'str'> <class 'str'> # 2) ''、"" 与 ''''''、""""""的区别 # ''、"" - 字符串中不能直接换行 # 3) 字符串有序 print('abc' == 'cba') # False

    2.2 字符

    转义字符 在特定的一个或者多个字符钱加 \ 让符号具有特殊功能或者特殊意义,那么这种带有 \ 字符就是转义字符: \n :换行 \t :水平制表符,相当于按一下Tab键 ‘、"、\:表示一个普通的’、"、 注意:任何一个转义字符的长度都是1

    普通字符 除了转义字符意外的字符都是普通字符,普通字符在字符串中表示这个符号本身 包括:汉字、数字、字母、符号、表情符号(🍄❀🐂🐖🐉🐍🦅🐎🐥)等…

    # 特殊的转义字符-编码字符:\u四位的十六进制数 - 表示16进制数对应的编码值对应的字符 print('abc\u005a') # abcZ

    2.3 字符编码 1)什么是字符编码 计算机在存储数据的时候只能存数字(存的数字二进制补码),为了能够让计算机存储字符,我们给每一个字符都对应一个固定的数字,那么每个字符对应的固定的数字就是这个字符的编码值

    2)字符编码表 - 记录字符和数字之间一一对应关系的表就是字符编码表 常见的字符编码表有两种:ASCII码表、Unicode编码表(python采用的是Unicode编码表) a.ASCII码表 ASCII码表总共有128个字符对应的编码,主要包含的是美国的通用字符,其中包括:英文标点符号、数字字符、字母字符以及其他的一些符号 ASCII码表中,数字字符在字母的前面,大写字母在小写字母前面,大写字母结束后有其他的字符,然后才是小写字母

    b.Unicode编码表 Unicode编码表包含ASCII码表 中文编码范围:4e00 ~ 9fa5

    # 1)编码字符:\u4位的16进制编码值 print('\u11ef') # ᇯ # 2)chr(编码值) - 获取编码值对应的字符 print(chr(0x4e00)) # 一 print(chr(0x9fa5)) # 龥 # 打印所有的中文字符 count = 0 for x in range(0x4e00, 0x9fa5+1): print(chr(x), end=' ') count += 1 if count % 25 == 0: print() # 3)ord(字符) - 获取字符对应的编码值(返回的是十进制数) print(ord('🐉')) # 128009 print(ord('刘'), ord('浩'), ord('然')) # 21016 28009 28982 print(hex(21016), hex(28009), hex(28982)) # 0x5218 0x6d69 0x7136

    3.字符串操作

    3.1 获取字符 字符串获取字符的操作和列表获取元素的方法一样 3.2 加法和乘法

    print('abc' + '123') # abc123 print('abc' * 3) # abcabcabc

    3.3 比较运算 两个字符串比较大小:比较第一对不相等的字符编码值的大小

    ‘a’ <= ‘char’ <= ‘z’ - 小写字母 ‘A’ <= ‘char’ <= ‘Z’ - 大写字母 ‘a’ <= ‘char’ <= ‘z’ or ‘A’ <= ‘char’ <= ‘Z’ - 字母 ‘0’ <= ‘char’ <= ‘9’ - 数字 ‘\u4e00’ <= ‘char’ <= ‘\u9fa5’ - 中文字符

    print('abc' > 'XYMN') # True print('abc' > '你好') # False # 练习:输入一个字符串,统计字符串中小写字母的个数 n = str(input('请输入一个字符串:')) count = 0 for i in n: if 'a' <= i <= 'z': count += 1 print('小写字母的个数:', count)
    Processed: 0.009, SQL: 8