• python_012


    一.内置函数

    1.sorted()排序函数

    a:语法sorted(Iterable,key = None,reverse = False) Iterable:可迭代对象;key:排序规则(函数)

    1 lst = [5,7,6,12,1,13,9,18,5]
    2 lst.sort()  # sort是list里面的一个方法
    3 print(lst)
    4 
    5 ll = sorted(lst, reverse=True) # 内置函数. 返回给你一个新列表  新列表是被排序的
    6 print(ll)
    7 #输出结果:
    8 [1, 5, 5, 6, 7, 9, 12, 13, 18]
    9 [18, 13, 12, 9, 7, 6, 5, 5, 1]

    带有key函数的排序:

    1 lst = ["大阳哥a", "尼古拉斯aa", "赵四aaa", "刘能a", "广坤aaaaaa", "谢大脚a"]
    2 
    3 def func(s):
    4     return s.count('a') #  返回数字  和下面lambda s:s.count('a')一样
    5 
    6 ll = sorted(lst, key=lambda s:s.count('a')) # 内部. 把可迭代对象中的每一个元素传递给func
    7 print(ll)
    8 #输出结果
    9 ['大阳哥a', '刘能a', '谢大脚a', '尼古拉斯aa', '赵四aaa', '广坤aaaaaa']

    2.lamda匿名函数

    a:为了解决一些简单的需求而设计的一句话函数;lambda表示的是匿名函数,,不需要def来声明,一句话就可以;

    语法:函数名 = lambda 参数:返回值

    b:匿名函数统一都叫lambda,可以用__name__()查看函数名;

    3.删选函数filter()

    a:语法:filter(function,Iterable)在filter中会自动把iterable中的元素传递给function,然后根据function

    返回True或者False来判断是否保留此项数据.

     1 lst = [1,2,3,4,5,6,7,8,9]
     2 ll = filter(lambda i:i%2==1, lst)
     3 #  第一个参数. 函数. 将第二个参数中的每一个元素传给函数. 函数如果返回True, 留下该元素.
     4 print("__iter__" in dir(ll))    #返回的ll是一个迭代器
     5 print("__next__" in dir(ll))
     6 print(list(ll))
     7 #输出结果:
     8 True
     9 True
    10 [1, 3, 5, 7, 9]

    4.map()映射函数

    a:语法:map(function,iterable)可以对可迭代对象中的每一个元素进行映射,分别执行function;

    1 lst = [1,2,3,4,5,6,7,8,9,0,23,23,4,52,35,234,234,234,234,234,23,4]
    2 it = map(lambda i: i * i, lst) # 把可迭代对象中的每一个元素传递给前面的函数进行处理. 处理的结果会返回成迭代器
    3 print(list(it))
    4 #输出结果
    5 [1, 4, 9, 16, 25, 36, 49, 64, 81, 0, 529, 529, 16, 2704, 1225, 54756, 54756, 54756, 54756, 54756, 529, 16]
    1 lst1 = [ 1, 2, 3, 4, 5]
    2 lst2 = [ 2, 4, 6, 8]
    3 print(list(map(lambda x, y:x+y, lst1, lst2))) # 如果函数中有多个参数. 后面对应的列表要一一对应
    4 #输出结果
    5 [3, 6, 9, 12]

    二.递归

    1.在函数中调用函数本身,就是递归

    2.在Python中递归最大的深度是998;

    3.可以用递归来遍历各种树形结构,比如文件夹系统,可以用递归来遍历该文件夹中的所有文件;

    4.递归和while循环的区别,while循环,用的是同一个变量,只不过被重新赋值,而递归则是每次都开辟一个命名空间,重新调用;

     5.关于文件夹的递归:

     1 import os
     2 filepath = "d:solor"
     3 def read(filePath,n):
     4     it = os.listdir(filePath)    #查看文件中的文件,是一个可迭代对象
     5     for line in it:
     6         fp = os.path.join(filePath,line)
     7         if os.path.isdir(fp):     #判断文件是文件夹还是文件
     8             print('	'*n,line)
     9             read(fp,n+1)
    10         else:
    11             print('	'*n,line)
    12 read(filepath,0)
    13 #输出了文件夹列表

    三.二分法三种模式

     1 lst = [11,22,33,44,55,66,77,88,99,123,234,345,456,567,678,789,1111]
     2 n = 567
     3 left = 0
     4 right = len(lst) - 1
     5 count = 1
     6 while left <= right:
     7     middle = (left + right) // 2
     8     if n > lst[middle]:
     9         left = middle + 1
    10     elif n < lst[middle]:
    11         right = middle - 1
    12     else:
    13         print(count)
    14         print("存在")
    15         print(middle)
    16         break
    17     count = count + 1
    18 else:
    19     print("不存在")
    20 lst = [11,22,33,44,55,66,77,88,99,123,234,345,456,567,678,789,1111]
    21 
    22 def binary_search(left, right, n):
    23     middle = (left + right)//2
    24     if left > right:
    25         return -1
    26     if n > lst[middle]:
    27         left = middle + 1
    28     elif n < lst[middle]:
    29         right = middle - 1
    30     else:
    31         return middle
    32     return binary_search(left, right, n)
    33 print(binary_search(0, len(lst)-1, 65) )
    34 
    35 
    36 def binary_search(lst, n):
    37     left = 0
    38     right = len(lst) - 1
    39     middle = (left + right) // 2
    40     if right <= 0:
    41         print("没找到")
    42         return
    43     if n > lst[middle]:
    44         lst = lst[middle+1:]
    45     elif n < lst[middle]:
    46         lst = lst[:middle]
    47     else:
    48         print("找到了")
    49         return
    50     binary_search(lst, n)
    51 binary_search(lst, 65)
  • 相关阅读:
    客户端不能连接MySQL
    Linux 7.x 防火墙&端口
    MYSQL.版本查看-LINUX
    Java之.jdk卸载-Linux
    Redis.之.环境搭建(集群)
    Elasticsearch.安装插件(head)
    Linux安装Nodejs
    Linux.ls 查看常用参数
    Elasticsearch.安装(单节点)
    Andrew NG 机器学习编程作业3 Octave
  • 原文地址:https://www.cnblogs.com/0627zhou/p/9343594.html
Copyright © 2020-2023  润新知