Day01 软件测试基础总结
Day02 测试用例知识点总结(上)
Day03 测试用例知识点总结(下)
Day04 禅道-从安装到卸载
Day05 MySql的基础使用
Day06 MySql知识点总结
Day07 MySql知识点再总结与多表查询
Day08 redis的基础知识
Day08 VMware的安装、Linux系统安装和Linux基础命令
Day09 Linux常用命令总结
Day10 Linux环境部署和项目构建
Day11 shell脚本基础知识
Day12 接口和协议
Day13 Postman的使用
Day13 Windows环境下的JDK安装与Tomcat的启动
Day14 jenkins部署
Day15 jenkins的简单使用
Day16 charles的基本使用
Day17 考试
Day18 考试
Day19 Fiddler的简单使用
Day20 Python基础
Day21 python 语句基础
Day22 Python数据类型(上)
Day23 Python数据类型(下)
Day24 Python函数
Day25 Python的文件操作和异常处理
Day26 Python面向对象
Day27 Python的部分算法
目录
本章节是Python学习的最后一天,简单介绍推导式与递归,最后是Python算法中的快速排序、冒泡排序和选择排序。
Python 推导式是一种独特的数据处理方式,可以从一个数据序列构建另一个新的数据序列的结构体。
作用:用一个表达式创建一个有规则的列表或者控制一个有规律列表。
推导式也称生成式。
Python 支持各种数据结构的推导式:
- 列表(list)推导式
- 字典(dict)推导式
- 集合(set)推导式
- 元组(tuple)推导式
创建0~10的列表
- list=[i for i in range(11)]
- print(list)
-
- '''
- [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
- '''
创建0~10中偶数的列表
- list=[i for i in range(0,11,2)]
- print(list)
-
- '''
- [0, 2, 4, 6, 8, 10]
- '''
- list=[i for i in range(11) if i%2==0]
- print(list)
-
- '''
- [0, 2, 4, 6, 8, 10]
- '''
使用多个for循环创建列表[(1,0),(1,1),(1,2),(2,0),(2,1),(2,2)]
- list=[(i,j) for i in range(1,3) for j in range(3)]
- print(list)
-
- '''
- [(1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
- '''
创建一个字典:字典key是1-5数字,value是这个数字的2次方
- dict1 = {i:i*2 for i in range(1,5)}
- print(dict1)
-
- '''
- {1: 2, 2: 4, 3: 6, 4: 8}
- '''
将两个列表组成字典,len()中使用较短的列表
- list11=["name","age","sex"]
- list22=["jack","30","男"]
- dict1 = {list11[i]:list22[i] for i in range(len(list22))}
- print(dict1)
-
- '''
- {'name': 'jack', 'age': '30', 'sex': '男'}
- '''
创建一个集合,数据为下发列表2次方
结合元素唯一,重复元素删除
- list1=[1,1,2,3]
- set1={i**2 for i in list1}
- print(set1)
-
- '''
- {1, 4, 9}
- '''
元组推导式和列表推导式的用法也完全相同,只是元组推导式是用 () 圆括号将各部分括起来,而列表推导式用的是中括号 [],另外元组推导式返回的结果是一个生成器对象。
- tu=(i for i in range(11))
- print(tu) #返回的是生成器对象
- print(tuple(tu)) # 使用 tuple() 函数,可以直接将生成器对象转换成元组
-
- '''
at 0x000001FD01969C80> - (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
- '''
递归是一种编程思想,简单来说就是自己调自己,递归需要出口,不然会无限循环。
- #累加
- def sum(n):
- if n==1: #if是出口
- return 1
- return n+sum(n-1) #自己调用自己
-
- print(sum(100))
-
- '''
- 5050
- '''
步骤:
1.在列表中随机找到一个基准(base,一般是索引为0的那个数)
2.使用base与其他数挨个比较,比base小的放left列表中,比base大的放在right列表中
3.将左右列表递归循环,最后拼接列表返回
- def quicksort(list):
- if len(list)<2:
- return list
- else:
- base=list[0]
- left=[i for i in list if i
- right=[i for i in list if i>base]
- return quicksort(left)+[base]+quicksort(right)
-
- li=[23,45,24,67,42,88,32,78,76,21,33,4,12,78,42]
- print(quicksort(li))
-
- '''
- [4, 12, 21, 23, 24, 32, 33, 42, 45, 67, 76, 78, 88]
- '''
2.冒泡排序
步骤:
- 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
- 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
- 针对所有的元素重复以上的步骤,除了最后一个。
- 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
两层for循环嵌套,外层控制排多少遍(外层列表长-1是因为次算法最多这么多次就能排完),内层控制排一趟列表的每一个元素(内层列表长-1是因为,比较时有使用i+1元素,会出现indexError)
- def bubblesort(list):
- for j in range(len(list)-1):
- for i in range(len(list)-1):
- if list[i+1]<list[i]:
- list[i+1],list[i]=list[i],list[i+1]
- return list
-
- li=[23,45,24,67,42,88,32,78,76,21,33,4,12,78,42]
- print(bubblesort(li))
-
- '''
- [4, 12, 21, 23, 24, 32, 33, 42, 42, 45, 67, 76, 78, 78, 88]
- '''
3.选择排序
- 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置
- 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
- 重复第二步,直到所有元素均排序完毕。
- def selectionSort(list):
- for i in range(len(list) - 1):
- minIndex = i
- for j in range(i + 1, len(list)):
- if list[j] < list[minIndex]:
- minIndex = j
- if i != minIndex:
- list[i], list[minIndex] = list[minIndex], list[i]
- return list
-
- li=[23,45,24,67,42,88,32,78,76,21,33,4,12,78,42]
- print(selectionSort(li))
-
- '''
- [4, 12, 21, 23, 24, 32, 33, 42, 42, 45, 67, 76, 78, 78, 88]
- '''
总结