day08集合2固定集合3函数

day07回顾

  • 元组 tuple
    可以是任意类型的数据(类似于列表)
    元组是不可变的序列(类似于字符串)
    () (20,) (10, 20)
    20, 10, 20
    构造函数tuple() / tuple(可迭代对象)

  • 字符串, 列表,元组的运算:
    + += * *=
    < <= > >= == !=
    in / not in
    索引 index / 切片 slice

    reversed(可迭代对象) 反转序列

  • 字典 dict
    表示方式
    {}, {1:‘一’}, {1:‘一’, 2:‘二’}
    构造函数 dict
    dict()
    dict(可迭代对象)
    dict([“AB”, (1,2), [3, 4]])
    dict(关键字传参)
    dict(name=“laowei”, age=35)

    键索引
    字典[键表达式] # 取值
    字典[键表达式] = 表达式 # 赋值

   del 字典[键表达式]
   D.clear() 清空
   D.pop(键)  移除
   D.copy()
   D.update(D2)  合并
   D.get(键, default=None)
   D.keys()    # 键 key
   D.values()  # 值 value
   D.items()   # 键值对

   for k, v in D.items():
       pass
  • 字典推导式:
    生成字典:
    {键表达式: 值表达式 for 变量in 可迭代对象 if 条件表达式 …}

day08笔记:

集合 set

  • 集合是可变的容器
    集合内的数据对象都是唯一的(不能重复多次的)
    集合是无序的存储结构,集合中的数据没有先后关系
    集合内的元素必须是不可变对象
    集合是可迭代对象
    集合是相当于只有键没有值的字典(键则是集合的数据)

  • 创建空集合:
    set()
    创建非空集合:
    s = {1, 2, 3}
    集合的构造函数 set
    set() 创建一个空的集合对象(不能用{}来创建空集合)
    set(iterable) 用可迭代对象创建一个新的集合对象

    示例:
    s = set() # 空集合
    s = {3, 5, 7, 9}
    s = set(“ABC”) # {‘A’, ‘B’, ‘C’}
    s = set(“ABCCBA”) # {‘A’, ‘B’, ‘C’}
    s = set({1:‘一’, 2:‘二’, 5:‘五’})
    s = set([1, 2.0, 3.14, False])
    s = {True, None, “ABC”, (1,2,3)}

  • 集合的运算:
    交集& 并集| 补集- , 对称补集^
    子集< 超集>

  • & 生成两个集合的交集
    s1 = {1, 2, 3}
    s2 = {2, 3, 4}
    s3 = s1 & s2 # s3 = {2, 3}

  • | 生成两个集合的并集
    s1 = {1, 2, 3}
    s2 = {2, 3, 4}
    s3 = s1 | s2 # s3 = {1, 2, 3, 4}

  • - 生成两个集合的补集
    s1 = {1, 2, 3}
    s2 = {2, 3, 4}
    s3 = s1 - s2 # {1}
    注: 两个属于s1,但不属于s2的所有元素的集合

  • ^ 生成两个集合的对称补集
    s1 = {1, 2, 3}
    s2 = {2, 3, 4}
    s3 = s1 ^ s2 # {1, 4}

  • < 判断一个集合是另一个集合的子集

  • > 判断一个集合是另一个集合的超集
    s1 = {1, 2, 3}
    s2 = {2, 3}
    s1 > s2 # True s1为s2的超集
    s2 < s1 # True s2为s1的子集

  • == / != 集合相同/不同
    s1 = {1, 2, 3}
    s2 = {3, 2, 1}
    s1 == s2 # True
    s1 != s2 # False

  • >= <= 略

  • in / not in 运算符
    等同于列表的in运算符,用于判断一个元素是否存在于集合中.如果存在则返回True,否则返回False
    not in 与in相反

    if 2 in {1, 2, 3}:
    print(“2在{1,2,3}内”)

  • 用于集合的函数:
    len(x) / max(x) / min(x)
    sum(x) / any(x) / all(x)

  • 练习:
    经理有: 曹操,刘备,孙权
    技术员有: 曹操,孙权,张飞,关羽
    用集合求:

    1. 即是经理也是技术员的人有谁?
    2. 是经理,但不是技术员的人有谁?
    3. 是技术员,但不是经理的人有谁?
    4. 张飞是经理吗?
    5. 身兼一职的人有谁?
    6. 经理和技术员共有几个人?
  • 集合常用的方法:
    文档参见:

  • 集合是可迭代对象
    s = {1,2,3}
    for x in s:
    print(x)
    L = [x**2 for x in s]

  • 集合推导式
    集合推导式是用可迭代对象创建集合的表达式

  • 语法:
    {表达式 for 变量 in 可迭代对象 [if 真值表达式]}
    注: []里的内容代表可省略

  • 示例:
    s = “ABC”
    s2 = {x for x in s} # s={‘A’, ‘B’, ‘C’}
    L = [1,2,3,4,5,3,4,5,6]
    s3 = {x ** 2 for x in L}

  • 推导式小结:
    三种:
    列表推导式 [x for x in L if …]
    字典推导式 {x: x**2 for x in L if …}
    集合推导式 {x for x in L if …}

  • 固定集合 frozenset
    固定集合是不可变的,无序的,含有唯一元素的集合

    作用:
    固定集合可以作为字典的键,也可以作为集合的值

  • 固定集合的构造函数:
    frozenset() 创建一个空的固定集合对象
    frozenset(iterable) 用可迭代对象创建一个固定集合对象

  • 示例:
    fs = frozenset() # 创建空固定集合
    fs = frozenset(“ABCCBA”) # fs = frozenset({‘B’, ‘A’, ‘C’})
    fs = frozenset(range(10))
    fs = frozenset({1, 2, 3})

    s = {frozenset({1, 2, 3}), 100, 200}

  • 固定集合的运算:
    & 交集
    | 并集

    • 补集
      ^ 对称补集
      < <= > >= == !=
      in / not in 运算
      (以上运算符用法与 set 相同)
  • 固定集合的方法:
    相当于集合的全部方法去掉修改集合的方法
    详见:
    help(frozenset)

  • 阶段总结:
    数据类型
    不可变数据类型
    bool, int, float, complex, str, tuple, frozenset, bytes(字节串)
    可变数据类型
    list, dict, set, bytearray(字节数组)

    运算符:
    + - * / // % **
    > >= < <= == !=
    is / is not
    in / not in
    not and or
    & ^ |
    +(正号), -(负号)
    [] 索引/切片

    表达式
    1
    1 + 2
    max(1,2,3) + max(4,5,6)
    print(“hello”)
    条件表达式 x if x > y else y
    全部的推导式: 列表,字典,集合推导式(三种)

  • 语句:
    表达式语句
    print(“hello”)
    赋值语句:
    a = 100
    a = b = c = 200
    x, y = 100, 200
    del语句
    if 语句
    while语句
    for语句
    break语句
    continue语句
    pass语句

  • 内建函数:

    • 用于容器的函数
      len(x)
      max(x)
      min(x)
      sum(x)
      any(x)
      all(x)
    • 构造函数
      int(x)
      bool(x)
      float(x)
      complex(x)
      str(x)
      list(x)
      tuple(x)
      dict(x)
      set(x)
      frozenset(x)
    • 数值处理函数
      abs(x)
      round(x)
      pow(x, y, z=None)
    • 进制字符串
      bin(x)
      oct(x)
      hex(x)
    • 编码转换
      chr(x)
      ord(x)
    • 返回可迭代对象的函数
      range(start, stop, step)
      reversed(x)
    • 输入输出函数:
      input()
      print(…, sep=’ ‘, end=’\n’)
    • 其它
      id(x)
      type(x)

函数 function

  • 什么是函数
    函数是可以重复执行的语句块,可以重复的调用
    函数是面向过程编程的最小单位

  • 作用:

    1. 用于封装语句块,提高代码的重用性
    2. 定义用户级别的函数
  • def 语句
    语法:
    def 函数名(形参列表):
    语句块
    说明:

    1. 函数的名字就是语句块的名称
    2. 函数名的命名规则写变量名的规则相同(必须是标识符)
    3. 函数名是一个变量(不要轻易对其赋值)
    4. 函数有自己的名字空间,在函数外部不可能访问函数内部的变量,在函数内部可以访问函数外部的变量
      要让函数处理处部的数据最好用参数给函数传入一些数据
    5. 函数如果不需要传入参数,参数列表可以为空
    6. 语句部分不能为空.如果为空需要填充pass语句
  • 函数调用
    函数名(实际调用传递参数)
    说明:
    函数调用是一个表达式.如果函数内没有return语句.默认返回None对象

  • 练习:
    写一个函数myadd,此函数中的参数列表里有两个参数x, y,此函数的功能是打印 x + y的和:
    如:
    def myadd(…):
    … # …是需要填充的部分

    myadd(100, 200) # 打印300
    myadd(“ABC”, “123”) # 打印 ABC123

  • return 语句
    语法:
    return [表达式]
    注: [] 代表其中的内容可省略

    作用:
    用于函数中,结束当前函数的执行,返回到调用函数的地方,同时返回一个对象的引用关系

    • 说明:
      1. return 语句后跟的表达式可以省略,省略后相当于 return None
      2. 如果函数内没有return语句,则函数执行完最后一条语句后返回None(相当于在最后加了一条return None语句)
  • 练习:

    1. 写一个函数 myadd2, 实现给出两个数,返回这两个数的和
      如:
      def myadd(x, y):

      a = int(input("请输入第一个数: "))
      b = int(input("请输入第二个数: "))
      print(“您输入的这两个数的和是”, myadd2(a, b))

    2. 写一个函数mymax3,返回三个数中最大的一个值
      def mymax3(a, b, c):
      … # 此处自己实现

    print(mymax3(100, 300, 200)) # 300
    print(mymax3(“ABC”, “123”, “abc”)) # abc

    1. 写一个函数 input_numbers,如下:
      def input_numbers():
      … # 此处自己实现
      此函数用来获取用户循环输入的正整数,当用户输入负数时结束输入
      将用户输入的数字以列表的形式返回,再用内建函数max,min,sum求出用户输入数的最大值,最小值及和

      L = input_numbers()
      print(L) # 打印列表
      print(“用户输入的最大数是:”, max(L))
      print(“用户输入的最小数是:”, min(L))
      print(“用户输入的数的和是:”, sum(L))

  • 练习:

    1. 写一个函数get_chinese_char_count(s) 函数,此函数实现的功能是给定一个字符串,返回这个字符串中中文字符的个数
      def get_chinese_char_count(s):
      … # 此处自己实现

    s = input("请输入中英文混合的字符串: ")
    print(“您输入的中文字符的个数是:”,
    get_chinese_char_count(s))
    2. 定义两个函数:
    sum3(a, b, c) 用于返回三个数的和
    pow3(x) 用于返回x的三次方(立方)
    用以上函数计算:
    1) 计算 1的立方+ 2的立方 + 3的立方
    2) 计算 1 + 2 + 3的和的立方
    即:13 + 23+3**3 和 (1+2+3)**3

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值