• python学习笔记 day16 几个重要的内置函数


    enumerate():  枚举,返回元素和该元素的索引

    L=[1,2,3,4]
    for index,item in enumerate(L):
        print(index,item)

    运行结果:

    all(iterable)----接收一个可迭代对象,当其中元素都是True,才返回True(有点类似于and),有一个为假,就返回False; any()-----接收一个可迭代对象,当所有元素都为假时才返回False(有点类似于or)

    print(all([1,2,3,'',' ']))       #当传进去的可迭代对象有一个为假,就返回False,比如这里的‘’
    print(all(['  ',[],1,[1,2,3]]))  #当传进去的可迭代对象有一个为假,就返回False,比如这里的[]
    print(any([1,[],'',0]))          #当传进去的可迭代对象有一个不为空,比如这里的1,就返回True
    print(any(['','  ',[],0]))       #当传进去的可迭代对象有一个元素不为空,比如这里的‘  ’就返回True

    运行结果:

    zip():接收两个可迭代对象,返回一个迭代器,将他们一个接一个组合之后再输出,有点类似于拉链

    L1=[1,2,3,4]
    L2=['hello','xuanxuan','你好','璇璇']
    ret=zip(L1,L2)  #zip()接收两个可迭代的参数,返回一个迭代器
    print(ret)
    print(ret.__next__())
    print('***************')
    for i in ret:   # 接着输出,因为上面已经使用.__next__()返回了一个
        print(i)

    运行结果:

     如果两个可迭代对象长度不匹配,就是个数不一致,zip()函数就只会按照长度小的那个组合,其他的不再输出:

    L1=[1,2,3]
    L2=['hello','xuanxuan','你好','璇璇']
    ret=zip(L1,L2)
    print(zip)  #zip()函数返回一个迭代器
    for i in ret:
        print(i)

    运行结果:

    fliter():接受一个函数和一个可迭代对象,返回一个迭代器。起到过滤的作用,会把这个函数依次作用于可迭代对象的每一个元素,将符合条件的元素筛选出来

     filter()函数有点类似于迭代器表达式 写上if条件判断的结果:

    比如我们现在需要筛选出0-10范围内的奇数:

    generator=(i for i in range(0,11) if i%2==1)   #使用生成器表达式产生一个生成器,带有if条件判断,起到过滤的作用
    print(generator)
    for i in generator:
        print(i)

     或者使用filter函数:

    def is_odd(x):   #自定义函数,奇数返回True
        return x%2==1
    
    generator=filter(is_odd,list(range(0,11)))
    print(generator)
    for i in generator:
        print(i)

    运行结果:

    如果有一个需求:需要过滤掉None,或者空字符:

    def is_str(s):
        return s and len(s.strip())  #s是为了过滤掉 空字符串'' None,和空列表[] 而len(s.strip())是为了过滤'    '这种有空格组成的
    
    generator=filter(is_str,['','   ',None,'test',[],'xuanbaby'])
    print(generator)  #filter()函数返回一个迭代器
    print(generator.__next__())
    print('*****')
    for i in generator:
        print(i)

    运行结果:

    返回1-100中平方根为整数的数:

    import math
    def func(x):
        return int(math.sqrt(x))==math.sqrt(x)
    generator=filter(func,list(range(1,101)))
    for i in generator:
        print(i)

    运行结果:

    map(): 接受一个函数,和一个可迭代对象,返回一个迭代器,相当于把函数作用于可迭代对象的每一个元素,然后按照某种约定的函数规则返回

    比如,使用map()函数返回列表中元素的绝对值

    generator=map(abs,[1,2,-3,4,-5,-7])
    print(generator)  #map()函数返回一个迭代器
    print(generator.__next__())
    print('*********')
    for i in generator:
        print(i)

    运行结果:

     filter()就是按照某种规则(前面传的函数)把后面可迭代对象中的元素符合条件的那些取出来;返回的是一个迭代器,需要.__next__()或者for循环取值

    map() 按照某种规则(前面传的参数)依次作用于后面可迭代对象中的元素,相当于把后面的元素按照某种映射规则进行映射,返回的也是一个迭代器;

     sorted():将list进行排序

    L.sort() :作用于原列表,所以会改变原有列表(可以对比L.append()方法就是操作原列表来记忆~),可以接受一个关键字参数key=func,表示按照某种规则排序,比如按照绝对值进行排序;

    sorted(L): 产生一个新列表,原列表中的元素并不会被改变;

    上面的这两种方法跟昨天的L.reverse()-----操作原列表,reversed(L) 返回一个可迭代的对象,不会改变原来列表 差不多

    L=[1,-9,-2,4,5,-7,-2]
    L.sort()    #会改变原有L,该方法没有返回值(对比L.append()方法)
    print(L)
    L.sort(key=abs)  #按照绝对值排序,会改变原列表
    print(L)
    
    L1=[1,-2,-8,-5,3,-6,-7,2,-4]
    L2=sorted(L1)  #会产生一个新的列表
    print(L1)  #并不会改变原有的列表
    print(L2)
    L3=sorted(L1,key=abs) #不会改变原有列表,使用sorted函数关键字参数key,指定按照绝对值排序
    print(L1)
    print(L3)

    运行结果:

    当然sorted()函数也可以接受reverse关键字参数,决定是否逆排序:

    L=[1,2,-4,-7,8,-5]
    print(sorted(L,key=abs,reverse=True))   #不会改变原列表,产生一个新列表,按照abs对元素进行倒序排

    运行结果:

    talk is cheap,show me the code
  • 相关阅读:
    jquery datatable[表格处理]之AdminLTE
    kdevtmpfsi挖矿病毒导致服务器cpu高负荷运行
    Python3 '%Y-%m-%dT%H:%M:%S.000Z' 时间格式转换
    python-生成动态路由轨迹图(scapy模块)
    Python之XlsxWriter模块(数据报表)
    python之web服务质量探测(pycurl模块)
    Django-图片验证码
    最简容器化动手小实践——再战flappybird
    基于OAS设计可扩展OpenAPI
    Istio最佳实践:在K8s上通过Istio服务网格进行灰度发布
  • 原文地址:https://www.cnblogs.com/xuanxuanlove/p/9607104.html
Copyright © 2020-2023  润新知