Day 9 元组和字符串

Day 9 元组和字符串

字典补充

  • 字典不支持加法运算,乘法运算和比较大小
  • in 和 not in 判断字典中的键是否存在
  • len(字典) 求字典长度, 求字典中键的个数
  • dict(数据) 强制转换成字典,数据本身必须是序列,容器型数据,同时序列中的元素必须两两成对的小序列
  • 字典.clear() - 清空字典
  • 字典.copy() - 复制字典,产生一个新列表并返回
  • 字典.get() - 获取字典中键对应的值
  • 字典.keys() - 获取字典的键,返回一个序列
  • 字典.values() - 获取字典所有的值,返回一个序列
  • 字典.items() - 获取字典所有的键值对,返回一个一个键值对对应的元组

元组

  • 元组是容器型数据类型,将小括号作为容器的标志,里面多个元素用逗号隔开

    t4 = (100,200,300,400)
    
  • 元组是不可变的数据类型,元素的个数和元素的值是不可变的,不支持增删改

  • 元组是有序的,顺序影响结果

  • 任何类型的数据都可以作为元组中的元素

  • 空元组,没有意义

  • 只有一个元素的元组,必须在元素后面加一个逗号,没有歧义的情况下,元组()可以省略

  • 元组有加乘,比较大小,in 和 not in

    list2 = (1, 2, 3, 4)
    list3 = (2, 3, 4, 5, 6)
    print(list3 + list2)  #(2, 3, 4, 5, 6, 1, 2, 3, 4)
    print(list2 > list3)   #False   比较第一个不同的元素
    
  • 相关函数 sum max min sorted len tuple表示强制转换

  • 相关方法 元组.count(元素) 元组.index(元素),返回元素的下标

  • 获取元组和列表中元素的另外一种方式

    #让变量的个数和列表或者元组中元素的个数一致,来依次获取元组或者列表中的元素
    list1 = [100, 200, 300]
    x, y, z = list1
    print(x, y, z)
    

集合

  • 集合是容器型数据,将{}作为容器的标志,里面多个数据用逗号隔开

  • 集合是可变的(支持增删改)

  • 集合是无序的,元素定位困难,集合作为容器使用,比较难,顺序不影响结果

    print({10, 20, 30} == {20, 10, 30}) #  True
    
  • 集合对元素的要求,和字典对键的要求一样,不可变类型的数据,是唯一,元素是不可变的数据类型

  • 集合数学运算

    s1 = {1, 2, 5, 6, 8, 9, 7}
    s2 = {1, 5, 3, 8, 9, 10, 20, 35, 47}
    # 交集   求两个集合的公共部分   集合1 & 集合2
    print(s1 & s2)  # {8, 1, 5, 9}
    # 并集   将两个集合合并成1个集合   集合1|集合2
    print(s1 | s2)
    # 差集  集合1去除集合2 也包含的部分  ,剩下的是差集
    print(s1 - s2)
    #  对称差集   去掉两个集合公共部分,剩下部分是对称差集
    print(s1 ^ s2)
    # 子集  和   真子集    不是比较大小
    # 判断 集合是否是另一个集合的子集
    print(s1 >= s2)
    #集合1  > = 集合2   判断集合2是否是集合1的子集
    

字符串

  • 字符串是容器型数据类型,能同时存储多个文字符号

  • 将单引号,双引号,三个单双引号作为容器的标志,和注释做区分

  • 字符串是不可变的,有序的(有下标操作)

  • 字符串中的每一个独立的符号都是字符串的元素,字符串的元素又叫字符,任何文字符号,都可以是字符串的元素

  • str = “”,定义空字符串,中间不能有空格

  • 字符中的元素分为普通字符和转义字符

  • 转义字符

    """
    \t    -     水平制表符,一个tab键
    \n    -    换行 (enter键)
    \\    -     表示一个普通的反斜杠
    \'   -     表示一个普通的单引号杠
    \"   -     表示一个普通的双引号杠
    """
    
  • r + 字符串 可以将字符串中所有的转义字符变成普通的字符

  1. 用三个集合表示三门学科的选课学生姓名(一个学生可以同时选多门课)

    a. 求选课学生总共有多少人

    b. 求只选了第一个学科的人的数量和对应的名字

    c. 求只选了一门学科的学生的数量和对应的名字

    d. 求只选了两门学科的学生的数量和对应的名字

    e. 求选了三门学生的学生的数量和对应的名字

    Chinese = {"王八", "初七", "老六", "猪四", "小三", "熊二", "强大"}
    Math = {"王八", "初七", " 牛五", "老六"}
    Science = {"初七", "老六", "猪四", "小三", "熊二"}
    # a. 求选课学生总共有多少人 (只要选课,就收进去),,可以对多个集合进行并运算
    print("选课总人数:", len(Chinese | Math | Science))
    # b. 求只选了第一个学科的人的数量和对应的名字
    only_first = Chinese - (Math | Science)
    
    print("只选了第一门学科的总人数为:", len(only_first), "分别是:", only_first)
    # c. 求只选了一门学科的学生的数量和对应的名字
    only_one = (Chinese - (Math | Science)) | (Math - (Chinese | Science)) | (Science - (Math | Chinese))
    print("只选了一门学科的总人数为", len(only_one), "分别是:", only_one)
    # d. 求只选了两门学科的学生的数量和对应的名字
    just_two = (Chinese & (Math ^ Science)) | (Math & (Chinese ^ Science)) | (Science & (Math ^ Chinese))
    print("只选两门学科的总人数为", len(just_two), "分别是:", just_two)
    # e. 求选了三门学生的学生的数量和对应的名字
    all_tree = Chinese&Math&Science
    print("选了三门学科的总人数为", len(all_tree), "分别是:",all_tree)
    
  2. 获取列表中出现次数最多的元素

    例如:nums = [1, 2, 3,1,4,2,1,3,7,3,3] —> 打印:3

    nums = [1,2,2,1,3] --> 打印1、2

    nums = [1,2,2,1,3]
    # nums = [1, 2, 3,1,4,2,1,3,7,3,3]
    counts_nums = []
    nums_print =set()
    for i in nums:
        counts_nums.append(nums.count(i))
    # print(counts_nums)
    max_meet = max(counts_nums)
    for i in range(len(counts_nums)):
        if counts_nums[i] == max_meet:
            nums_print.add(nums[i])
    print(nums_print)
    
  3. 实现给定一个日期,判断这个日期是今年第几天的程序(尝试

    例如:2022/12/31 --> 今年第365天;2022/1/1 --> 今年第1天

    # 实现给定一个日期,判断这个日期是今年第几天的程序(**尝试**)
    days_2022 = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
    print(len(days_2022))
    some_day = "2022/01/01"
    day = int(some_day[-2:])
    month = int(some_day[5:7])
    year = some_day[:4]
    print(day)
    print(month)
    some_day_month =[]
    if month == 1:
        print(some_day ,"为",year,"年,第",day,"天.")
    else:
        for i in range(month-1):
            some_day_month.append(days_2022[i])
        print(some_day, "为", year, "年,第", sum(some_day_month)+day, "天.")
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值