TOP

python-day14

一. 匿名函数

  def 函数名(形参):

    函数体(return)

  函数名(实参)

  形参:

    1. 位置参数

    2. 默认值参数

    3. 动态传参

      *args: 动态接受位置参数

      **kwargs: 动态接受关键字参数

    位置 > *args >默认值参数 > **kwargs

  实参:

    1. 位置参数

    2. 关键字参数

    3. 混合参数

  lambda 参数: 返回值

1 a = lambda n:n*n #匿名函数(返回n的平方),一般不会用来做复杂的操作
2 r = a(3)
3 print(r)
4 # a 给函数传递两个参数, a, b 计算a+b的结果
5 n = lambda m,n:m+n
6 print(n(1,9))
View Code

二. sorted

  排序

  sorted( Iterable, key , reverse )

 1 # sorted() #排序
 2 # lst = [1,2,3,4,5,3,2,2,1,5,6,8,9,76,4]
 3 # s = sorted(lst,reverse=True) #倒序
 4 # print(s)
 5 
 6 # lst = ["易", "贾克斯", "赵信", "德玛西亚", "皇子", "刀妹"]
 7 # def func(s):
 8 #     return len(s)
 9 # s = sorted(lst,key=func)#把列表中的每一个元素传递给func. 根据func返回值进行排序
10 # print(s)
View Code

三. filter

  筛选

  filter(function, Iterable )

1 # filter() 筛选
2 # lst = ["渴望", "年轮", "家有儿女", "蜗居", "49天", "浪漫满屋"]
3  # 把后面的可迭代对象中的每一个元素交给前面的函数。 根据函数返回的True或者False。 判断是否保留该元素
4 # f = filter(lambda  s:len(s)>2,lst)
5 # # print('__iter__' in dir(f))
6 # for el in f :
7 #     print(el)
View Code

四. map

  映射

1 # map() 映射
2 # lst = [1,2,3,48,666,59]
3 # #计算列表中的每一项的平方
4 # #映射
5 # #把可迭代对象中的每一个元素拿出来交给前面的函数执行,保留最后的执行结果
6 # m = map(lambda x:x*x,lst )
7 # print(list(m))
View Code

五. 递归

  自己调用自己

 

 1 # 递归
 2 # def func():
 3 #     print('我是函数')
 4 #     func() #函数自己调用自己
 5 # func()
 6 
 7 import os#它是一个模块
 8 def func(path,ceng): #path: H:/a
 9     lst = os.listdir(path)
10     for el in lst:
11         rp = os.path.join(path,el)
12         if os.path.isdir(rp):
13             print('\t'*ceng,el,sep='')
14             func(rp,ceng+1)
15         else:
16             # f = open(rp, mode="w")
17             # f.wriete("alex到此一游")
18             # f.flush()
19             # f.close()
20             print('\t'*ceng,el,sep='')
21 func('H:/a',0)
View Code

 

六. 二分法(递归的应用)

  开头

  结尾

  中间

 

 1 # 使用二分法查找来实现上述功能,
 2 # 必须是有序序列
 3 lst = [4, 56, 178, 253, 625, 1475, 2580, 3574, 15963] # 时间复杂度. n
 4 # # 让用户输入一个数n. 判断这个n是否出现在lst中
 5 n = int(input('输入一个数:'))
 6 left = 0  #左边界
 7 right = len(lst) - 1 #末尾的索引 右边界
 8 while left <= right:#当左边界大于右边界结束循环
 9     mid = (left+right)//2 #求中间的索引坐标
10     if n > lst[mid]:
11         left = mid+1#左边界往右移动
12     elif n< lst[mid]:
13         right = mid-1#右边界往左移动
14     else:
15         print('找到了') #找到了目标数字
16         break
17 else: #当左比右大,循环结束,没有找到目标数
18     print('没找到') 
View Code

 

posted on 2018-11-05 19:07  hui_T  阅读(122)  评论(0编辑  收藏  举报