python基础-day09

今日讲解Python基础知识的第九部分,深入探讨了Python的高级特性,包括装饰器、元类和生成器等,并通过实例解析了它们在实际编程中的应用。
集合  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('ABCABCABC')   #{'A','B','C'}  主动去重
    s=set({1:'一',2:'二',5:'五'})    #{1,2,5}
    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  #s3={1}
        (两个属于s1,s1对s2的补集:s1中有s2没有)

    ^   生成两个集合的对称补集
        s1={1,2,3}
        s2={2,3,4}
        s3=s1 ^ s2  #s3={1,4}
        (s1,s2交集之外的集合)
        与(s1-s2)|(s2-s1)相同

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

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

    <= / >= 略

    in / not in运算符
        等同于列表的in运算符,用于判断一个元素是否在集合中,如果在返回True,否则False
    not in 与 in 相反
        示例:
            2 in {1,2,3} #True
            2.0 in {1,2,3} #True
            True in {1,2,3} #True
        
    用于集合的函数
        len(x)/max(x)/min(x)
        sum(x)/any(x)/all(x)
    
    练习:
    经理有:曹操,刘备,孙权
    技术人员有:曹操,孙权,张飞,关羽
    用集合求:
        1即是经理也是技术员的人有谁
        2是经理,不是技术员的人
        3是技术员不是经理
        4张飞是经理吗?
        4身兼一直的人有谁?
        6经理和技术员共有几人?
            s1={'曹操','刘备','孙权'}
            s2={'曹操','孙权','张飞','关羽'}
            print('即是经理也是技术员的人:',s1&s2)
            print('是经理,不是技术员的人',s1-s2)
            print('是技术员不是经理',s2-s1)
            s='张飞' in s1
            print(s)
            print('身兼一直的人',s1^s2)
            print('经理和技术员共有几',s1|s2)
    
    集合常用方法:
        文档参见:set.html

        集合是可迭代对象
        s={1,2,3}
        for x in s:
            pass
        l=[x**2 for x in s]

集合推导式:
    集合推导式是用可迭代对象创建集合的表达式
        语法:
        {表达式 for 变量 in 可迭代对象 [if 真值表达式]}
        注:[]的内容可以省略
    示例:
        s='ABC'
        s2={x for x in s}   #s2={'A','B','C'}


推导式小结:
    三种:
        列表推导式 [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('ABC')

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

    - 补集
    ^ 对称补集
    < <= > >= == !=
    in /not in 运算


阶段总结:
    数据类型:
        不可变类型:
            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)-------x**y%z
  -进制字符串
    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 语句 (define)
    语法:
        def 函数名(形参列表):
        语句块
    说明:
        函数的名字就是语句块的名称
        函数名的命名规则与变量名的规则相同(必须是标识符)
        函数名是一个变量(不要轻易对其赋值)
        函数有自己的名字空间,在函数外部不可能访问函数内部的变量,在函数内部可以访问函数外部的变量
            要让函数处理内部的数据最好用参数给函数传入一些数据
        函数如果不需要传入参数,参数列表可以为空
        语句部分不能为空,如果为空需要填充pass语句
    示例:
        def say_hello():
            print('hello world!')
            print('hello tarena!')
            print('hello everyone!')
        say_hello()
    函数调用:
        函数名(实际调用传递参数)
        说明:
            函数调用是一个表达式,如果函数内没有return语句,默认返回None对象
        
    示例:
        写一个函数,给他两个数据,打印最大值
            def mymax(a,b):
                m=a
                if b>m:
                    m=b
                print('最大数是',m)
            mymax(100,200)
        
    练习:
        写一个函数myadd,此函数中的参数列表有两个参数x,y此函数的功能是打印x+y的和
            def myadd(x,y):
                m=x+y
            print('两数之和为:',m)

    return 语句
        return[表达式]
        注:[]内的内容可以省略
        作用:
            用于函数中,结束当前函数的执行,返回到调用函数的地方,同时返回一个对象的引用关系
        说明:
            1retrun语句后跟的表达式可以省略,省略相当于return None
            2如果函数内没有return语句,则函数执行完最后一条语句后返回None(相当于在最后加了一条
                return None语句)

    练习:
        1写一个函数myadd2,实现给出两个数,返回这两个数的和
        如:
                def myadd(x,y):
                    return(x+y)
                a=int(input('输入第一个数'))
                b=int(input('输入第二个数'))
                print('和是',myadd(a,b))
        2.写一个函数mymax3,返回三个数中最大的值
            def mymax3(a,b,c):
                d=max(a,b,c)
                return d
            print(mymax3(100,300,200))
            print(mymax3('ABC','123','abc'))
        3.写一个函数,input_numbers,用来获取用户循环输入的正整数,当用户输入负数时结束输入
            将用户输入的数字以列表的形式返回,再用内建函数max,min,sum打印相关值
            def input_numbers():
                        def input_numbers():
                            l=[]
                            while True:
                                a=int(input('输入数字:'))
                                if a<0:
                                    break
                                else:
                                    l.append(a)
                                
                            return l
                        print(l)
                        L = input_numbers()
                        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的和的立方
     即:1**3+2**3+3**3和(1+2+3)**3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值