zoukankan      html  css  js  c++  java
  • python 高阶内置函数

    1.lambda 匿名函数

      lambda 参数: 返回值

      

      函数名统一都叫lambda.

    2.sorted() 排序函数

      排序函数

      sorted(iterable,key,reverse)

      key:排序规则.

      运行流程:可迭代对象中的每一个元素都交给后面key函数来执行.

        得到一个数字(权重).通过这个数字进行排序

    3.filter()过滤函数

      filter(function,iterable)

      把可迭代对象中的每一个元素交给前面的函数进行筛选.函数返回True或者False

    4.map()映射函数

      map(function, iterable)

      把可迭代对象中的数据交给前面的函数进行执行,返回值就是map的处理结果

    5.递归

      函数自己调用自己

      最大深度:1000. ps:到不了1000就停了

      

    a = 1
    def func():
        global a
        a += 1
        print(a)
        func()
    func()

    6.二分法

      核心掐头去尾取中间. 一次砍一半

      两种算法: 常规算法,递归算法

      lst = [22,33,44,55,66,77,88,99,101,238,345,456,567,6789,789]
    
    def func(n, left, right):
        if left <= right: # 边界
            print('进行一次二分法')
            mid = (left + right) // 2
            if n > lst[mid]:
                left = mid + 1
                return func(n, left, right)
            elif n < lst[mid]:
                right = mid - 1
                return func(n, left, right)
            elif n == lst[mid]:
                print("找到了")
                return mid
                # return 通过 return返回. 终止递归
        else:
            print("没有这个数") # 递归出口
            return -1
    ret = func(789,0,len(lst) - 1)
    print(ret)

    1,map来处理字符串列表,把列表中所有人都变成sb,比方alex_sb
        name=[
    oldboy,'alex','wusir']

     

    2,map来处理下述l,然后用list得到一个新的列表,列表中每个人的名字都是sb结尾
        l=[{'name':'alex'},{'name':'y'}]

     

    3,filter来处理,得到股票价格大于20的股票名字

    shares={
       'IBM':36.6,
       'Lenovo':23.2,
        'oldboy':21.2,
        'ocean':10.2,
        }

     

    7,有下面字典,得到购买每只股票的总价格,并放在一个迭代器中。

    结果:list一下[9110.027161.0,......]

    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}]

     

    8,还是上面的字典,用filter过滤出单价大于100的股票。

     

    9,有下列三种数据类型,
            l1 = [1,2,3,4,5,6]
            l2 = ['oldboy','alex','wusir','
    太白','日天']
            tu = ('**','***','****','*******')
    写代码,最终得到的是(每个元祖第一个元素>2,第三个*至少是4个。)
            [(3, 'wusir', '****'), (4, '太白', '*******')]这样的数据。   
     
     
     
    10,有如下数据类型:
            l1 = [ {'sales_volumn': 0},
                   {'sales_volumn': 108},
                   {'sales_volumn': 337},
                   {'sales_volumn': 475},
                   {'sales_volumn': 396},
                   {'sales_volumn': 172},
                   {'sales_volumn': 9},
                   {'sales_volumn': 58},
                   {'sales_volumn': 272},
                   {'sales_volumn': 456},
                   {'sales_volumn': 440},
                   {'sales_volumn': 239}]

    l1按照列表中的每个字典的values大小进行排序,形成一个新的列表。

    
    
    # 1.
    name=['oldboy','alex','wusir']
    ret = map(lambda i:i+"_sb",name)
    print(list(ret))
    
    # 2.
    l = [{'name':'alex'},{'name':'y'}]
    ret = map(lambda i:i['name']+'sb',l)
    print(list(ret))
    
    # 3.
    shares={
           'IBM':36.6,
           'Lenovo':23.2,
          'oldboy':21.2,
        'ocean':10.2,
        }
    ret = filter(lambda i:shares[i]>20,shares)
    print(list(ret))
    
    # 4.
    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}]
    
    ret = map(lambda i:i['shares']*i['price'],portfolio)
    print(list(ret))
    
    # 5.
    ret = filter(lambda i:i['price'] > 100,portfolio)
    print(list(ret))
    
    # 6.
    l1 = [1,2,3,4,5,6]
    l2 = ['oldboy','alex','wusir','太白','日天']
    tu = ('**','***','****','*******')
    ret = filter(lambda i:i[0]> 2 and len(i[2])>=4 ,zip(l1,l2,tu))
    print(list(ret))
    
    # 7
    l1 = [ {'sales_volumn': 0},
            {'sales_volumn': 108},
            {'sales_volumn': 337},
            {'sales_volumn': 475},
            {'sales_volumn': 396},
            {'sales_volumn': 172},
            {'sales_volumn': 9},
            {'sales_volumn': 58},
            {'sales_volumn': 272},
            {'sales_volumn': 456},
            {'sales_volumn': 440},
            {'sales_volumn': 239}]
    def func(dic):
        i =dic['sales_volumn']
        return i
    a = sorted(l1,key=func)
    print(a)
    
    b = sorted(l1,key=lambda i:i['sales_volumn'])
    print(b)

     

  • 相关阅读:
    MySQL初始化以及更改密码
    对付小白的ARP的简单介绍
    PXE批量安装CentOS7操作系统
    20不惑
    辩论会
    学习
    JAVA语言的特点
    程序流程图对新手来说很重要。
    浅谈博客、微博与轻博客的区别与联系
    要学好JAVA要注意些什么?
  • 原文地址:https://www.cnblogs.com/zbw582922417/p/9481779.html
Copyright © 2011-2022 走看看