• Python:Day14 集合、函数


    浅copy只copy一层

    深copy相当于克隆一份

    深copy要引入copy,具体如下:

    import copy

    wife = copy.copy()  #此为浅copy,括号中要加copy的对象,相当于xx.copy()

    xiaosan = copy.deepcopy()  #此为深copy,括号内为要copy的对象

    集合(set)

    集合(set):把不同的元素组在一起形成集合,是python基本的数据类型。

    集合元素:组成集合的成员(不可重复)

    创建列表两种方式:

    a = [ 1,3,4 ]

    b = list( [1,3,4] )  #最里面一个括号是小括号,中括号,大括号都行,只要里面是个序列就行

    创建元组的两种方式:

    a = (1,3,4)

    b = tuple( [1,3,4] ) 

    set只有一种创建方式:

    s = set('alex li')

    s = frozenset('alex li')

    set是无序的,无序意味着没有索引且不能做切片操作,字典虽然也是无序的,但是可以通过键来取值,那怎么取,两种方法:for遍历;迭代器;可以使用in、not in来访问或判断集合元素

    set两大特点:无序、唯一

    可哈希可以理解为不可变类型

    集合对象(集合中的每一个元素)是一组无序排列的可哈希的值:集合成员可以做字典的键(? 因为成员必须是可哈希的,也就是不可变类型,所以可以做字典的键)

    集合分类:可变集合(set)、不可变集合(frozenset)

    可变集合:可添加和删除元素,非可哈希,不能用作字典的键,也不能做其它集合的元素

    集合内置方法:

    s.add('uu')  #添加一个元素

    s.update('ops')  #将括号中的对象当成一个序列,将序列中的每个元素分别添加到集合

    s.update( [12,'eee'] )  #update添加多少元素

    s.remove('alex')  #删除括号内指定元素

    s.pop()  #随机删除一个元素

    s.clear()  #清空集合中所有元素,由于没有自己的表达形式,所以返回set()

    del s  #删除集合

    集合类型操作符

    1、in , not in 

    2、集合等价与不等价(= , != )  #set('alex') == set('alexexex')

    3、子集、超集  # set('alex’).issuperset('alexw')  或  set('alex') > set('alexw')  /  a.issubset(b)  或  a < b

    4、交集  # a.intersection(b)  或  a & b

    5、并集  # a.union(b)  或 a | b

    6、差集  # a.difference(b)  或  a - b  /  b.difference(a)  或  b - a 

    7、对称差集(反向交集)     # a.symmetric_difference(b)  或  a ^ b

    函数作用:

    1、减少重复代码

    2、方便修改,更易扩展

    3、保持代码一致性

    创建函数:

    def 函数名字():

      函数体

    调用函数:

    函数名字()  #调用一定记得加括号 

    函数命名规则:和变量命名规则一样

     函数的参数:函数参数放的位置是有讲究的,必须参数放最左边,然后默认参数,无命名不定长参数,有命名不定长参数

    1、必需参数:必需参数须以正确的顺序传入函数,调用时的数量必须和声明的一样

    2、关键字参数

    3、默认参数

    4、不定长参数

    def print_info(name,age):
        print('Name:%s'%name)
        print('Age:%d'%age)
    
    print_info('xiaohu',30)     #必需参数
    print_info(age=30,name='xiaohu')    #关键字参数
    def print_info(name,age,sex='male'):    #默认参数
        print('Name:%s'%name)
        print('Age:%d'%age)
        print('Sex:%s'%sex)
        
    print_info('xiaohu',28)
    def add(*args):     #无命名不定长参数
        print(args)     #args是一个元组
        sum = 0
        for i in args:
            sum += i
        print(sum)
    add(1,2,3,4)
    
    def print_info(**kwargs):   #有命名不定长参数 
        for i in kwargs:      #kwargs是一个字典
            print('%s:%s'%(i,kwargs[i]))
    print_info(job='IT',hobby='girls',heighit=188)   #注意括号中的是键值对,但是用的是等号,而不是字典的冒号
    
    def f(*args,**kwargs):  #无命名必须要放左面,有命名必须要放右面,在输入实参的时候也要按照这个顺序,如果有默认参数,要放在不定长参数的左边
        pass

    return:

    作用:

    1、结束一个函数

    2、返回某个值

    注意点:

    1、函数里如果没有return,会默认返回一个None

    2、如果return多个对象,那么python会帮我们把多个对象封装成一个元组返回

      

    作用域:

    LEGB:L = local    E = encolsing    G = global   B = built in 

    1、变量查找顺序:LEGB,作用域局部》外层作用域》当前模块中的全局》python内置作用域

    2、只有模块、类、及函数才能引入新作用域

    3、对于一个变量,内部作用域先声明就会覆盖外部变量,不声明直接使用,就会使用外部作用域的变量

    4、内部作用域要修改域变量的值时,全局变量要使用global关键字嵌套作用域变量要使用nonlocal关键字,nonlocal是python3新增的关键字,有了这个关键字,就能完美的实现闭包了。

  • 相关阅读:
    jni中c代码调用java代码
    android 自动生成jni C语言头文件
    android jni下c文件怎么输出logcat
    android jni java类型与c语言类型互换
    约瑟夫环问题
    LeetCode面试题17.16 按摩师
    杂记
    书接上回,继续获取各链接内的小说内容
    正则表达式爬取小说各章节链接
    python爬虫学习心得:中国大学排名(附代码)
  • 原文地址:https://www.cnblogs.com/sq5288/p/8365540.html
Copyright © 2020-2023  润新知