一.内置函数

1.sorted()排序函数

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

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

带有key函数的排序:

 lst = ["大阳哥a", "尼古拉斯aa", "赵四aaa", "刘能a", "广坤aaaaaa", "谢大脚a"]

 def func(s):
return s.count('a') # 返回数字 和下面lambda s:s.count('a')一样
 ll = sorted(lst, key=lambda s:s.count('a')) # 内部. 把可迭代对象中的每一个元素传递给func 
print(ll)
#输出结果
['大阳哥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来判断是否保留此项数据.

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

4.map()映射函数

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

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

二.递归

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

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

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

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

5.关于文件夹的递归:

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

三.二分法三种模式

 lst = [11,22,33,44,55,66,77,88,99,123,234,345,456,567,678,789,1111]
n = 567
left = 0
right = len(lst) - 1
count = 1
while left <= right:
middle = (left + right) // 2
if n > lst[middle]:
left = middle + 1
elif n < lst[middle]:
right = middle - 1
else:
print(count)
print("存在")
print(middle)
break
count = count + 1
else:
print("不存在")
lst = [11,22,33,44,55,66,77,88,99,123,234,345,456,567,678,789,1111] def binary_search(left, right, n):
middle = (left + right)//2
if left > right:
return -1
if n > lst[middle]:
left = middle + 1
elif n < lst[middle]:
right = middle - 1
else:
return middle
return binary_search(left, right, n)
print(binary_search(0, len(lst)-1, 65) ) def binary_search(lst, n):
left = 0
right = len(lst) - 1
middle = (left + right) // 2
if right <= 0:
print("没找到")
return
if n > lst[middle]:
lst = lst[middle+1:]
elif n < lst[middle]:
lst = lst[:middle]
else:
print("找到了")
return
binary_search(lst, n)
binary_search(lst, 65)

python_012的更多相关文章

随机推荐

  1. 测开之路八十八:HTML之文本格式化

    准备一段文本内容 强调显示: <!-- b标签,加粗显示 --> <p><b>这是b标签的效果</b></p> <!-- strong ...

  2. object数据类型

    1 object数据类型是dataframe中特殊的数据类型,当某一列出现数字.字符串.特殊字符和时间格式两种及以上时,就会出现object类型,即便把不同类型的拆分开,仍然是object类型. 如下 ...

  3. 练习4-python+selenium+pandas

    最近对于python的第三方库pandas比较有兴趣,在学习的过程中也简单的结合selenium做了一个简单的小工具 最新公司用一个外部系统来记录,追踪BUG,可是这个系统并不是专业的BUG管理系统, ...

  4. django配置mysql报错 no model named "MySQLdb"

    官网上面连接mysql数据库的参数很少,入了不少坑,一直排错和检查参数都没有问题,只能manage.py mirgrate 更新数据库的信息创建数据库的表. 很是郁闷.报了一大堆的错误,大概意思就是说 ...

  5. 2019春第十二周作业Compile Summarize

    这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 这里 我在这个课程的目标是 能按自己的想法解出题目 这个作业在那个具体方面帮助我实现目标 能朝着软件工程师方向发展 参考文献与网址 C语言 ...

  6. Windows 10更新后无法启动Dolby音频驱动程序

    在电脑更新Windows 10 1903版本后,重启出现如下问题: 经查,这与驱动强制签名有关.解决方法如下: 打开"设置"->"更新与安全"->& ...

  7. Pycharm 修改项目名称后 中括号中出现先前名称怎么解决?

    这时候,你打开工程的路径,会找到一个隐藏文件, .idea  目录删掉他,重新导入Pycharm 就行了. idea记录了一些工程项目信息. 步骤: 1.退出当前工程 2.打开工程路径删除.ideal ...

  8. Balanced Lineup poj3264 线段树

    Balanced Lineup poj3264 线段树 题意 一串数,求出某个区间的最大值和最小值之间的差 解题思路 使用线段树,来维护最大值和最小值,使用两个查询函数,一个查区间最大值,一个查区间最 ...

  9. [AHOI2013]作业 (莫队+分块)

    [AHOI2013]作业 (莫队+分块) 题面 给定了一个长度为n的数列和若干个询问,每个询问是关于数列的区间[l,r],首先你要统计该区间内大于等于a,小于等于b的数的个数,其次是所有大于等于a,小 ...

  10. Django - Xadmin (三) 分页、搜索和批量操作

    Django - Xadmin (三) 分页.搜索和批量操作 分页和 ShowList 类 因为 list_view 视图函数里面代码太多,太乱,所以将其里面的用于处理表头.处理表单数据的关键代码提取 ...