zoukankan      html  css  js  c++  java
  • Python内置函数

    print(abs(2)) #求出绝对值
    print(all(([],1,3)))  #传1个可跌倒对象,元素中包含的全部为可迭代对象,返回True 其他返回False #如果可迭代对象是空,就返回True
    print(any((' ',None,[]))) #传1个可迭代对象,元素中包含1个可迭代对象,返回True 其他返回False
    print(sum([1,23])) #传入1个可迭代对象,求和。
    print(bin(3)) #求出二进制
    print(bool(0)) #求出布尔值
    print(bytes('张根'.encode('gbk')))
    print(divmod(100,3)) #取出商和余数
    print(hash("ssss"))
    
    salaries={
        'egon':3000,
        'alex':100000000,
        'wupeiqi':10000,
        'yuanhao':2000
    }
    f=lambda k: salaries[k]
    print(max(salaries,key=lambda k: salaries[k]))
    print(sorted(salaries,key=lambda x:salaries[x],reverse=True))
    #默认按字典的键比较,如果有key关键字按照 key里面定义的函数执行结果比较; 
    #参数key用来指定一个函数,此函数在每次元素比较时被调用,此函数代表排序的规则,也就是你按照什么规则对你

    序列进行排序;
    # 也可以把函数传入 max 和sorted 后面函数 将传入 sorted传入迭代器 salary ,next序列salary一个逐一比较字典的值;
    print(sorted(salaries,key=lambda x:salaries[x] ))
    
    print(sorted(salaries,key=lambda x:salaries[x]))
    
    from functools import reduce
    l=['游勤兵','方少伟','高路川']
    l1=[1,2,3,4]
    
    map函数 将旧列表的内容,映射到一个新的列表;

    g
    =map(lambda x:x+"2",l) #map (函数,可迭代对象) 返回一个迭代器 for i in g: print(i)
    reduce函数 将现有的数据内容,合并整合成一个新的列表;
    #需要从第三方模块中导入 from functools import reduce
    print(reduce( lambda x,y:x+y ,l1 ))  #reduce(函数,可迭代对象)
    
    filter函数 讲现有的内容,按一定的规则过滤出来到一个新的列表;
    get=filter(lambda f: f <5 ,l1) #filter(函数,可迭代对象) 返回以个迭代器 for i in get: print(i)

    匿名函数

    什么是匿名函数?

    不声明函数名称的函数为匿名函数,也就是lambda函数,使用lambda函数可以时代码简洁、节省声明函数所需的内存;

    #普通函数
    def cala0(n):
        return n*n
    
    print(cala0(10))
    
    #lambda函数(匿名函数)
    cala1=lambda n1,n2:n1*n2  #cala1是函数名,n1,n2是参数,:后面的是函数逻辑
    print(cala1(10,20))

    Lambda和max、min、map。。联合使用

    dic={"k1":10,"k2":100,"k3":30}
    def func(key):
        return dic[key]
    
    print(max(dic))         #默认排序是根据字典中的键对应的accic码进行排序
    print(max(dic,key=func))#指定排序的key为1个函数的返回值
    print(max(dic,key=lambda k:dic[k])) #lambada和max内置函数共用

    重要的内置函数

    all()和any()内置函数

    print(all(['A',False])) #all()内置函数接收1个可迭代对象,如果可迭代对象中的元素全部为True,才会返回
    print(any(([None,1]))) #any()内置函数也是接收1个可迭代对象,和all()相对如果可迭代对象中元素任意1个为Ture都会返回True

    zip()拉链函数

    l=[1,2,3]
    l1=['a','b','c']
    l2=("*","**",[1,2])
    print(dict(zip(l,l1)))#{1: 'a', 2: 'b', 3: 'c'}

    filter()内置过滤函数

    filter(接收1个函数,1个可迭代的对象)作为参数;

    然后可迭代对象中的每1个元素将 传入函数中做为参数执行;

    函数每1次执行如果返回True就会被筛选出来;

    注意结果是个迭代器

    filter执行后元素个数变少,只管筛选,不改变原来的值

    筛选奇数

    print(list(filter(lambda x: x+1 if x%2 == 1 else(),[1,4,6,7,9,12])))

     筛选字符串

    print(list(filter(lambda x:x if type(x)==str else(),[1,'hello',6,7,"word",12,"18"])))

     求可以开方的数字

    from math import sqrt
    print(list(filter(lambda x:x if sqrt(x)%1==0 else(),range(0,100))))

    map()内置过滤函数

    对可迭代对象的元素进行改变

    map执行后元素个数不变,值发生改变;

    print(list(map(abs,[-1,7,-40,20])))

    sorted()内置函数

    列表自带的sort()方法,是在原列表的基础上进行排序

    #列表自带的sort()方法
    l=[1,-4,6,5,-10]
    l.sort(key=abs)#根据绝对值对列表l进行排序
    print(l)

     sorted(可迭代对象,key=func),生成1个新的列表,占用内存;

    #sorted(可迭代对象,key=func),生成1个新的列表
    print(sorted(l,key=abs,reverse=True))

     根据列表的长度排序

    l=['  ',[1,2],'hello world']
    
    print(sorted(l,key=len))

    练习

    print('=====================作业一'.center(50))
    print('1、用map来处理字符串列表啊,把列表中所有人都变成sb,比方alex_sb')
    name=['alex','wupeiqi','yuanhao']
    g1=map(lambda i:i+'sb',name )
    for i in g1:
        print(i)
    
    print("2、用map来处理下述l,然后用list得到一个新的列表,列表中每个人的名字都是sb结尾")
    l=[{'name':'alex'},{'name':'y'}]
    g2=map(lambda i:i['name']+'sb' ,l )
    for i in g2:
        print(i)
    
    
    print('=====================作业二'.center(50))
    
    shares={
        'IBM':36.6,
        'Lenovo':23.2,
        'oldboy':21.2,
        'ocean':10.2,
    }
    print(shares)
    print('1、用filter来处理,得到股票价格大于20的股票名字')
    f3=filter(lambda d:d>20 ,shares.values())
    for i in f3:
        print(i)
    
    
    
    print('=====================作业二'.center(50))
    print('1、如下,每个小字典的name对应股票名字,shares对应多少股,price对应股票的价格')
    portfolio = [
        {'name': 'IBM', 'shares': 100, 'price': 91.1},
        {'name': 'AAPL', 'shares': 50, 'price': 543.22},
        {'name': 'FB', 'shares': 200, 'price': 21.09},
        {'name': 'HPQ', 'shares': 35, 'price': 31.75},
        {'name': 'YHOO', 'shares': 45, 'price': 16.35},
        {'name': 'ACME', 'shares': 75, 'price': 115.65}
    ]
    print(portfolio)
    
    print('1:map来得出一个包含数字的迭代器,数字指的是:购买每支股票的总价格')
    
    g4= map(lambda f:f['shares']*f['price'], portfolio)
    for i in g4:
        print(i)
    l=list(map(lambda f:f['shares']*f['price'], portfolio))
    print('2:基于1的结果,用reduce来计算,购买这些股票总共花了多少钱')
    from functools import reduce
    print(l)
    print(reduce(lambda x,y:x+y,l))
    
    print('3、:用filter过滤出,单价大于100的股票有哪些')
    
    g5=filter(lambda i:i['price'] <100,portfolio)
    for i in g5:
        print(i)

    执行结果

                 =====================作业一             
    1、用map来处理字符串列表啊,把列表中所有人都变成sb,比方alex_sb
    alexsb
    wupeiqisb
    yuanhaosb
    2、用map来处理下述l,然后用list得到一个新的列表,列表中每个人的名字都是sb结尾
    alexsb
    ysb
                 =====================作业二             
    {'IBM': 36.6, 'Lenovo': 23.2, 'oldboy': 21.2, 'ocean': 10.2}
    1、用filter来处理,得到股票价格大于20的股票名字
    36.6
    23.2
    21.2
                 =====================作业二             
    1、如下,每个小字典的name对应股票名字,shares对应多少股,price对应股票的价格
    [{'name': 'IBM', 'shares': 100, 'price': 91.1}, {'name': 'AAPL', 'shares': 50, 'price': 543.22}, {'name': 'FB', 'shares': 200, 'price': 21.09}, {'name': 'HPQ', 'shares': 35, 'price': 31.75}, {'name': 'YHOO', 'shares': 45, 'price': 16.35}, {'name': 'ACME', 'shares': 75, 'price': 115.65}]
    1:map来得出一个包含数字的迭代器,数字指的是:购买每支股票的总价格
    9110.0
    27161.0
    4218.0
    1111.25
    735.7500000000001
    8673.75
    2:基于1的结果,用reduce来计算,购买这些股票总共花了多少钱
    [9110.0, 27161.0, 4218.0, 1111.25, 735.7500000000001, 8673.75]
    51009.75
    3、:用filter过滤出,单价大于100的股票有哪些
    {'name': 'IBM', 'shares': 100, 'price': 91.1}
    {'name': 'FB', 'shares': 200, 'price': 21.09}
    {'name': 'HPQ', 'shares': 35, 'price': 31.75}
    {'name': 'YHOO', 'shares': 45, 'price': 16.35}

    内置函数——filter和map

    参考

  • 相关阅读:
    SendMessage操作另一个EXE,存在这,以后也许用得着。
    六、Delphi 2009 泛型容器单元(Generics.Collections)[5]: TObject...<T> 系列
    闲扯原码、反码、补码
    限制edit只能输入数字
    动态创建TXMLDocument对XML文件进行读取和写入
    XML操作
    Ubuntu下配置lazarus开发环境
    C#结构体(二)
    【转】 如何有效減少Nios II EDS所編譯程式碼大小? (IC Design) (Nios II)
    关于NiosII和Win7系统兼容性的问题处理方式
  • 原文地址:https://www.cnblogs.com/sss4/p/6703719.html
Copyright © 2011-2022 走看看