集合和字符串

    科技2022-07-12  136

    集合和字符串

    1.什么是集合(set)

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

    1)空集合

    x ={} s1 = set() print(type(x), type(s1)) # <class 'dict'> <class '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, 20} print(s4) # {40, 10, 20, 30}

    集合会自动去重

    s5 = [10, 20, 30, 40, 10, 10, 20] print(list(set(s5))) # [40, 10, 20, 30]

    4)集合是无序的

    print({1, 4, 5} == {4, 1, 5}) # True

    2.集合的增删改查

    1)查 - 集合只能遍历

    补充:用for循环遍历序列的时候,都是现将序列转换成列表,然后遍历列表

    games = {'lol', 'cs', 'dnf', 'dota', 'csgo'} for x in games: print('x:', x)

    2)增

    集合.add(元素) - 在集合中添加指定的元素

    games.add('kof') print(games) # {'kof', 'cs', 'lol', 'dota', 'dnf', 'csgo'}

    集合.update(序列) - 将序列中所有的元素添加到集合中

    games.update({'cf', 'gta'}) # {'kof', 'gta', 'cs', 'cf', 'lol', 'dota', 'dnf', 'csgo'} print(games)

    3)删

    集合.remove(元素) - 删除集合中的指定元素,若是元素不存在会报错

    games = {'lol', 'cs', 'dnf', 'dota', 'csgo'} games.remove('dnf') print(games) # {'cs', 'lol', 'dota', 'csgo'}

    集合.discard(元素) - 删除集合中的元素,若是元素不存在也不会报错

    4)改 - 先删除原来的,在添加新的

    games = {'lol', 'cs', 'dnf', 'dota', 'csgo'} games.remove('dnf') games.add('ff')

    3.数学集合运算

    python中的集合支持数学中的集合运算:&(交集), |(并集), -(差集),^(对称差集), < > <= >=(判断包含关系)

    1)集合1 & 集合2 - 求两个集合的公共部分

    set1 = {1, 2, 3, 4, 5} set2 = {1, 2, 3, 4, 5, 6, 7, 8} print(set1 & set2) # {1, 2, 3, 4, 5}

    2)集合1 | 集合2 - 合并产生一个新的集合

    print(set1 | set2) # {1, 2, 3, 4, 5, 6, 7, 8}

    3)集合1 - 集合2 - 集合1中去掉包含在集合2中剩下的元素

    set1 = {1, 2, 3, 4, 5} set2 = {1, 2, 3, 4, 5, 6, 7, 8} print(set1 - set2) # set() print(set2 - set1) # {8, 6, 7}

    4)集合1 ^ 集合2 - 将两个集合合并后去掉公共部分,只留下不重复的

    set1 = {1, 2, 3, 4, 5} set2 = {1, 2, 3, 4, 5, 6, 7, 8} print(set1 ^ set2) # {6, 7, 8}

    5)集合1 > 集合2 - 判断集合2是否为集合1的真子集

    集合1 < 集合2 - 判断集合1是否为集合2的真子集

    集合1 >= 集合2 - 判断集合2是否是集合1的子集

    集合1 <= 集合2 - 判断集合1是否是集合的子集

    print({1, 2, 3, 4} > {1, 2}) print({1, 2, 3, 4} > {1, 2, 3, 4})

    字符串

    1.什么是字符串

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

    1)空串

    s1 = ‘’ s2 = “” s3 = ‘’’’’’ s4 = “”""""

    2)’’,"“与’’’’’’,”"""""的区别

    ''和"" - 字符串中不能直接换行

    ‘’’’’’ 和"""""" - 可以直接换行

    3)字符串有序

    print(‘abc’ == ‘cba’) # False

    2.字符

    1)字符的分类 字符分为普通字符和转义字符两种 转义字符:在特定的一个或者多个符号前,加上 \ 让符号具有特殊功能或者特殊意义,那么这种带有\字符就是转义字符 \n - 换行 \t - 水平制表符(相当于按一下tab键) ’ - 表示一个普通的单引号 " - 表示一个普通的双引号 \ - 表示一个普通的 注意:任何一个转义字符对应的长度为1 2)除了转义字符以外的字符都是普通字符,普通字符在字符串中表示这个字符本身,包括汉字数字和字母,表情符号等 “”"

    特殊的转义字符 - 编码字符:\u四位的十六进制数 - 表示十六进制数对应的编码值对应的字符

    str1 = 'abc\n123' print(str1) str4 = 'abc\u4fa5' print(str4)

    2.字符编码

    1)什么是字符编码 计算机在存储数据的时候,只能存储数字二进制补码,为了能够让计算机存储字符,给每一个字符都对应一个固定的数字 这个字符所对应的数字就是这个字符的编码值 2)字符编码表 - 记录字符和数字之间一一对应关系的表就是字符编码表 常见的字符编码表有两种:ASCII码表和Unicode编码表 ASCII码表: 总共有128个字符,主要包含了美国的符号,包括英文的标点符号,数字字符,字母字符以及其他的一些特殊符号 数字字符在字母的前边,大写字母在小写字母的前边,大写字母和小写字母之前有间隔 ,大写字母和小写字母中间间隔32 Unicode编码表:python用, 包含ASCII码表,中文编码范围:4100 - 9fa5

    1)编码字符

    print(’\u11ef’)

    2)chr(编码值) - 获取编码值对应的字符

    print(chr(0x4e00)) print(chr(97)) # a

    for x in range(0x4e00, 0x9fa5+1):

    3)ord(字符) - 获取字符对应的编码值(返回的是十进制数)

    print(ord('殷')) # 27575 print(ord('睿')) # 30591 print(hex(27575)) # 0x6bb7 print(hex(30591)) # 0x777f

    1.获取字符

    字符串获取字符和列表获取元素的方法一样

    1)获取字符

    sentence = '当你想要放弃的时候,比赛就已经结束了' print(sentence[2], sentence[-8]) # 想 比

    2) 字符串切片

    sentence2 = 'great power makes great responsibility' print(sentence2[:])

    3)遍历

    for x in sentence2: print('x:', x)

    2.加法和乘法

    print('abc' + '123') print('all' + 'of you') print('all' * 3)

    3.比较大小

    比较第一对不相等的字符编码值的大小

    char 'a' <= char <= 'z' - 小写字母 'A' <= char <= 'Z' - 大写字母 'a' <= char <= 'z' or 'A' <= char <= 'Z‘ - 字母 '\u4e00' <= char <= '\u9fa5' - 中文字符 print('abc' > 'XCVB') # True print('abc' > '事实') # False

    练习:输入一个字符串,统计字符串中小写字母的个数

    char = 'dhaiudhJHIUG980JI8H9kkk' list1 = [] for x in char: if 'a' <= x <= 'z': list1.append(x) print(len(list1))

    练习:输入一个字符串,删除字符串中中文字符

    char1 = '米烤肉稀罕lov可分解和e' str3 = '' for y in char1: if '\u4e00' <= y <= '\u9fa5': continue str3 += y print(str3) str2 = 'nis耗时ss==AHJ看' str3 = '' for x in str2: if '\u4e00' <= x <= '\u9fa5': continue str3 += x print(str3) # nisss==AHJ
    Processed: 0.011, SQL: 8