Day07-元组和集合

在这里插入图片描述

字符串的相关应用场景

王者荣耀脏话用语屏蔽
  1. 步骤

    • 人为收集脏话的数据集
    • 检测一句话中有没有与已有脏话列表中的相同元素
    • jieba分词模块: 对用户输入的话语做切分,将切分出来的每个部分对脏话数据集做成员运算
    • 脏话的替换*
    data = ['菜鸡', '辣鸡', '卧槽', '臣卜木曹']
    str1 = '你别玩了,可真是个菜鸡'
    cutList = ['你', '别', '玩了', '可', '真是', '个', '辣鸡']
    result = ['*' * len[i] if i in data else i for i in cutList]
    print(result)  # 输出的结果为列表
    print(''.join(result))  # 将列表连成一句话
    

字符串结尾

  1. ljust、rjust、center

    # 练习 - 设置学号:python001,python002,python999
    for i in range(1, 1000):
      print('python' + f'{i}'.rjust(3, '0'))
    
  2. 判断回文数

    # 练习 - 判断一个数是否是回文数
    # 回文数:1234321、45654、123321等
    num = input('请输入一个数: ')
    if str(num) == str(num)[-1::-1]:
      print(f'{num}是回文数')
    else:
      print(f'{num}不是回文数')
    

元组

  1. 元组的性质和列表相似

    • 容器符号: ( ); 数据类型: tuple
    • 有序的容器型数据类型 ( 下标 )
    • 不可变数据类型 ( 没有增删改 )
    • 可以储存任意类型数据
  2. 元组的拼接、重复、比较大小、成员运算和列表一模一样

    t1 = tuple()
    t2 = (1, 2, 3, (1, 2))
    print(t1 + t2)  # 合并空字符串,结果不变
    print(t2 * 2)  # 将t2元组重复打印
    
  3. 元组的循环遍历也与字符串一样

    for i in t2:  # 直接获取
      print(i)
    
    for i in range(len(t2)):  # 简介获取
      print(t2[i])
    
  4. 打包和解包

    # 在python中,一个变量可以被赋予多个值,这些值会被组成元组再赋给这个变量
    a = 10, 20, 30, 40
    print(a)
    
  5. 解包 - 将一个容器中的数值拆分,再分给多个变量

    # 解包分为三种情况:
    # 一种为变量数量和容器中的数据个数相同
    
    x_1, x_2, x_3, x_4 = a
    print(x_1, x_2, x_3, x_4)  # 输出结果为10 20 30 40
    
    # 第二种为变量数量多于容器元素数 (不定长参数)
    
    x, *y = a
    print(x, y)  # 输出结果为10 [20, 30, 40]
    x, *y, z = a
    print(x, y, z)  # 输出结果为10 [20, 30] 40
    
    # 第三种为变量数量少于容器元素数 (不定长参数)
    
    *m, n, x = (10, 20)
    print(m, n, x)  # 输出结果为[] 10 20
    *m, n, *x, y = (10, 20)  # 一次解包只能有一个不定长参数
    print(m, n, x, y)
    
    # 注意:一次解包只能有一个不定长参数,超出会报错
    
  6. 创建元组

    # 创建空元组
    t1 = ()
    t2 = tuple()
    
    # 创建一元组(元素个数为1)
    t3 = (3)  # t3类型为int
    t4 = (3, )  # t4类型为元组
    
    # 创建多元组
    t5 = (1, 2)
    
  7. Python中多个变量交换值

    a = 20
    b = 30
    c = 40
    a, b = b, a
    a, b, c = b, a, c
    print(a, b, c)  # 输出结果为20 30 40
    
  8. 元组的sum、max、min、count、index、sorted用法和列表一样

集合

  1. 性质

    • 容器符号: { },类型: set
    • 无序的数据类型( 没有下标 )
    • 可变数据类型( 只有增删 )
    • 集合中只能存放不可变数据类型( 例如数字、字符串、元素等不可变的数据 )
  2. 集合的创建

    # 创建空集合
    s1 = set()
    print(s1, type(s1))  # 输出结果为set() <class 'set'>
    
    s2 = {10, 10.5, True, None, 'abcde', (1, 2, 3)}
    print(s2)  # 输出结果为{True, 10.5, 'abcde', None, 10, (1, 2, 3)} -- 无序
    
  3. 集合的运算

    # 集合的运算有4种:交、并、差、对称差
    a = {1, 3, 5, 7, 9}
    b = {1, 2, 3, 4, 5}
    
    # 交集 &
    print(a & b)  # 输出结果为{1, 3, 5}
    
    # 并集 |
    print(a | b)  # 输出结果为{1, 2, 3, 4, 5, 7, 9}
    
    # 差集 -
    print(a - b)  # 输出结果为{9, 7}
    print(b - a)  # 输出结果为{2, 4}
    
    # 对称差 ^
    print(a ^ b)  # 输出结果为{2, 4, 7, 9}
    
  4. 集合的性质

    • 确定性 - 一个元素,只有在集合中和不在集合中两种可能
    • 互异性 - 一个集合中不会出现重复元素
    • 无序性 - 元素没有固定位置
  5. 用元组给列表去重

    list1 = [1, 2, 3, 4, 3, 2, 1]
    list2 = list(set(list1))
    print(list2)  # 输出结果为[1, 2, 3, 4]
    
    s3 = {1, 2, 3, 4, 3, 2, 1}
    print(s3)  # 输出结果为{1, 2, 3, 4}
    
    print(set('hello'))  # 输出结果为{'e', 'l', 'h', 'o'}
    
  6. 对集合进行遍历

    for i in s3:
      print(i)
    # 输出结果为
    1
    2
    3
    4
    
  7. 成员运算

    print(3 in s3)  # 输出结果为True
    

集合的增删

  1. # add - 向集合中添加元素
    # update - 从一个容器中将所有元素添加到集合中
    
    s1 = set()
    s1.add(1)
    s1.add('abc')
    print(s1)  # 输出结果为{1, 'abc'}
    
    s1.update('hello')
    print(s1)  # 输出结果为{1, 'abc', 'o', 'l', 'e', 'h'}
    
  2. # discard - 删除某个指定的元素,重复删除不会报错
    # remove - 删除某个指定的元素,重复删除会报错
    # pop - 删除集合中的第一个元素(不常用)
    # clear - 清空集合
    
    s1.discard(1)
    s1.remove('abc')
    print(s1)  # 输出结果为{'o', 'l', 'e', 'h'}
    
    print(s1.pop())  # 输出结果为o
    s1.clear()
    print(s1)  # 输出结果为set()
    
  3. 集合推导式 --> 将列表推导式的[ ] 换成 { }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值