• Python学习day14(内置函数二,匿名函数)


    和数据结构相关(24)

    列表和元祖(2)

    list:将一个可迭代对象转化成列表(如果是字典,默认将key作为列表的元素)。
    tuple:将一个可迭代对象转化成元祖(如果是字典,默认将key作为元祖的元素)。

    l = list((1,2,3))
    print(l)
    tu = tuple((1,2,3))
    print(tu)
    
    相关内置函数(2)

    reversed:将一个序列翻转,并返回此翻转序列的迭代器。
    slice:构造一个切片对象,用于列表的切片。

    ite = reversed(['a',2,3,'c',4,2])
    for i in ite:
        print(i)
    
    li = ['a','b','c','d','e','f','g']
    sli_obj = slice(3)
    print(li[sli_obj])
    
    sli_obj = slice(0,7,2)
    print(li[sli_obj])
    
    字符串相关(9)

    str:将数据转化成字符串。
    format:与具体数据相关,用于计算各种小数,精算等。
    bytes:将其他编码形式转化为bytes类型。

     s = '你好'
     bs = s.encode('utf-8')
     print(bs)
     s1 = bs.decode('utf-8')
     print(s1)
     bs = bytes(s,encoding='utf-8')
     print(bs)
     b = '你好'.encode('gbk')
     b1 = b.decode('gbk')
     print(b1.encode('utf-8'))
    

    bytearry:返回一个新字节数组。这个数组里的元素是可变的,并且每个元素的值范围: 0 <= x < 256。

    ret = bytearray('alex',encoding='utf-8')
    print(id(ret))
    print(ret)
    print(ret[0])
    ret[0] = 65
    print(ret)
    print(id(ret))
    

    memoryview

    ret = memoryview(bytes('你好',encoding='utf-8'))
    print(len(ret))
    print(ret)
    print(bytes(ret[:3]).decode('utf-8'))
    print(bytes(ret[3:]).decode('utf-8'))
    

    ord:输入字符找该字符编码的位置
    chr:输入位置数字找出其对应的字符
    ascii:是ascii码中的返回该值,不是就返回/u...

    # ord 输入字符找该字符编码的位置
     print(ord('a'))
     print(ord('中'))
    
    # chr 输入位置数字找出其对应的字符
     print(chr(97))
    print(chr(20013))
    
    # 是ascii码中的返回该值,不是就返回/u...
     print(ascii('a'))
    print(ascii('中'))
    

    repr:返回一个对象的string形式(原形毕露)。

    # %r  原封不动的写出来
     name = 'taibai'
    print('我叫%r'%name)
    
    # repr 原形毕露
    print(repr('{"name":"alex"}'))
    print('{"name":"alex"}')
    
    数据集合(3)

    dict:创建一个字典。
    set:创建一个集合。
    frozenset:返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。

    相关内置函数(8)

    len:返回一个对象中元素的个数。
    sorted:对所有可迭代的对象进行排序操作。

    L = [('a', 1), ('c', 3), ('d', 4),('b', 2), ]
    sorted(L, key=lambda x:x[1])               # 利用key
    #[('a', 1), ('b', 2), ('c', 3), ('d', 4)]
     
     students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
    sorted(students, key=lambda s: s[2])            # 按年龄排序
    #[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
     
    sorted(students, key=lambda s: s[2], reverse=True)    # 按降序
    #[('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
    

    enumerate:枚举,返回一个枚举对象。

    for i in enumerate([1,2,3]):
        print(i)
    for i in enumerate([1,2,3],100):
        print(i)
    

    all:可迭代对象中,全都是True才是True
    any:可迭代对象中,有一个True 就是True
    zip:函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同。

    l1 = [1,2,3,]
    l2 = ['a','b','c',5]
    l3 = ('*','**',(1,2,3))
    for i in zip(l1,l2,l3):
        print(i)
    

    filter:过滤

    #filter 过滤 通过你的函数,过滤一个可迭代对象,返回的是True
    #类似于[i for i in range(10) if i > 3]
    def func(x):return x%2 == 0
    ret = filter(func,[1,2,3,4,5,6,7])
    print(ret)
    for i in ret:
       print(i)
    

    map:会根据提供的函数对指定序列做映射

    def square(x) :            # 计算平方数
          return x ** 2
    
    map(square, [1,2,3,4,5])   # 计算列表各个元素的平方
    [1, 4, 9, 16, 25]
    map(lambda x: x ** 2, [1, 2, 3, 4, 5])  # 使用 lambda 匿名函数
    [1, 4, 9, 16, 25]
     
    # 提供了两个列表,对相同位置的列表数据进行相加
    map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])
    [3, 7, 11, 15, 19]
    

    匿名函数

    匿名函数:为了解决那些功能很简单的需求而设计的一句话函数。

    #这段代码
    def calc(n):
        return n**n
    print(calc(10))
     
    #换成匿名函数
    calc = lambda n:n**n
    print(calc(10))
    

    下面给出了一个关于匿名函数格式的说明

    函数名 = lambda 参数 :返回值
    
    #参数可以有多个,用逗号隔开
    #匿名函数不管逻辑多复杂,只能写一行,且逻辑执行结束后的内容就是返回值
    #返回值和正常的函数一样可以是任意数据类型
    

    我们可以看出,匿名函数并不是真的不能有名字。
    匿名函数的调用和正常的调用也没有什么分别。 就是 函数名(参数) 就可以了!
    匿名函数与内置函数举例

    l=[3,2,100,999,213,1111,31121,333]
    print(max(l))
    
    dic={'k1':10,'k2':100,'k3':30}
    print(max(dic))
    print(dic[max(dic,key=lambda k:dic[k])])
    
    res = map(lambda x:x**2,[1,5,7,4,8])
    for i in res:
        print(i)
    
    res = filter(lambda x:x>10,[5,8,11,9,15])
    for i in res:
        print(i)
    
  • 相关阅读:
    逻辑智力题【更新中】
    每天进步一点点_抽奖程序
    GDC2016【For Honor-荣耀战魂】的次世代动画技术
    GDC2016【彩虹六号:围攻 】使丰富的“突破”成为可能的破坏系统
    GDC2016 【巫师3 狂猎】的游戏事件工作流
    GDC 2016 神秘海域4中使用Substance制作Texture
    GDC2016【全境封锁(Tom Clancy's The Division)】对为何对应Eye Tracked System,以及各种优点的演讲报告
    【FFXV】中物理模拟的结构以及游戏业界的乐趣
    龙珠 超宇宙 [Dragon Ball Xenoverse]
    如龙0
  • 原文地址:https://www.cnblogs.com/hyg19910701/p/9544449.html
Copyright © 2020-2023  润新知