• Day27 Python的部分算法


    系列文章目录

    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的部分算法


    目录

    前言

    一、推导式

    1.列表推导式

    2.字典推导式

     3.集合推导式

     4.元组推导式

    二、递归

    三、算法 

    1.快速排序

     2.冒泡排序

     3.选择排序

    总结


    前言

            本章节是Python学习的最后一天,简单介绍推导式与递归,最后是Python算法中的快速排序、冒泡排序和选择排序。


    一、推导式

    Python 推导式是一种独特的数据处理方式,可以从一个数据序列构建另一个新的数据序列的结构体。

    作用:用一个表达式创建一个有规则的列表或者控制一个有规律列表

    推导式也称生成式。

    Python 支持各种数据结构的推导式:

    • 列表(list)推导式
    • 字典(dict)推导式
    • 集合(set)推导式
    • 元组(tuple)推导式

    1.列表推导式

    创建0~10的列表

    1. list=[i for i in range(11)]
    2. print(list)
    3. '''
    4. [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    5. '''

     创建0~10中偶数的列表

    1. list=[i for i in range(0,11,2)]
    2. print(list)
    3. '''
    4. [0, 2, 4, 6, 8, 10]
    5. '''
    1. list=[i for i in range(11) if i%2==0]
    2. print(list)
    3. '''
    4. [0, 2, 4, 6, 8, 10]
    5. '''

    使用多个for循环创建列表[(1,0),(1,1),(1,2),(2,0),(2,1),(2,2)]

    1. list=[(i,j) for i in range(1,3) for j in range(3)]
    2. print(list)
    3. '''
    4. [(1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
    5. '''

    2.字典推导式

    创建一个字典:字典key是1-5数字,value是这个数字的2次方

    1. dict1 = {i:i*2 for i in range(1,5)}
    2. print(dict1)
    3. '''
    4. {1: 2, 2: 4, 3: 6, 4: 8}
    5. '''

     将两个列表组成字典,len()中使用较短的列表

    1. list11=["name","age","sex"]
    2. list22=["jack","30","男"]
    3. dict1 = {list11[i]:list22[i] for i in range(len(list22))}
    4. print(dict1)
    5. '''
    6. {'name': 'jack', 'age': '30', 'sex': '男'}
    7. '''

     3.集合推导式

    创建一个集合,数据为下发列表2次方

    结合元素唯一,重复元素删除

    1. list1=[1,1,2,3]
    2. set1={i**2 for i in list1}
    3. print(set1)
    4. '''
    5. {1, 4, 9}
    6. '''

     4.元组推导式

    元组推导式和列表推导式的用法也完全相同,只是元组推导式是用 () 圆括号将各部分括起来,而列表推导式用的是中括号 [],另外元组推导式返回的结果是一个生成器对象

    1. tu=(i for i in range(11))
    2. print(tu) #返回的是生成器对象
    3. print(tuple(tu)) # 使用 tuple() 函数,可以直接将生成器对象转换成元组
    4. '''
    5. at 0x000001FD01969C80>
    6. (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
    7. '''

    二、递归

    递归是一种编程思想,简单来说就是自己调自己,递归需要出口,不然会无限循环。

    1. #累加
    2. def sum(n):
    3. if n==1: #if是出口
    4. return 1
    5. return n+sum(n-1) #自己调用自己
    6. print(sum(100))
    7. '''
    8. 5050
    9. '''

    三、算法 

    1.快速排序

    步骤:

    1.在列表中随机找到一个基准(base,一般是索引为0的那个数)

    2.使用base与其他数挨个比较,比base小的放left列表中,比base大的放在right列表中

    3.将左右列表递归循环,最后拼接列表返回

    1. def quicksort(list):
    2. if len(list)<2:
    3. return list
    4. else:
    5. base=list[0]
    6. left=[i for i in list if i
    7. right=[i for i in list if i>base]
    8. return quicksort(left)+[base]+quicksort(right)
    9. li=[23,45,24,67,42,88,32,78,76,21,33,4,12,78,42]
    10. print(quicksort(li))
    11. '''
    12. [4, 12, 21, 23, 24, 32, 33, 42, 45, 67, 76, 78, 88]
    13. '''

     2.冒泡排序

    步骤:

    1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
    2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
    3. 针对所有的元素重复以上的步骤,除了最后一个。
    4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

    两层for循环嵌套,外层控制排多少遍(外层列表长-1是因为次算法最多这么多次就能排完),内层控制排一趟列表的每一个元素(内层列表长-1是因为,比较时有使用i+1元素,会出现indexError)

    1. def bubblesort(list):
    2. for j in range(len(list)-1):
    3. for i in range(len(list)-1):
    4. if list[i+1]<list[i]:
    5. list[i+1],list[i]=list[i],list[i+1]
    6. return list
    7. li=[23,45,24,67,42,88,32,78,76,21,33,4,12,78,42]
    8. print(bubblesort(li))
    9. '''
    10. [4, 12, 21, 23, 24, 32, 33, 42, 42, 45, 67, 76, 78, 78, 88]
    11. '''

     3.选择排序

    1. 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置
    2. 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
    3. 重复第二步,直到所有元素均排序完毕。
    1. def selectionSort(list):
    2. for i in range(len(list) - 1):
    3. minIndex = i
    4. for j in range(i + 1, len(list)):
    5. if list[j] < list[minIndex]:
    6. minIndex = j
    7. if i != minIndex:
    8. list[i], list[minIndex] = list[minIndex], list[i]
    9. return list
    10. li=[23,45,24,67,42,88,32,78,76,21,33,4,12,78,42]
    11. print(selectionSort(li))
    12. '''
    13. [4, 12, 21, 23, 24, 32, 33, 42, 42, 45, 67, 76, 78, 78, 88]
    14. '''


    总结

  • 相关阅读:
    开设自己的网站系类01购买服务器
    Python3 第十七课 -- 编程第一步
    JShaman JavaScript混淆加密工具,中英版本区别
    后端大厂面试-15道题
    systemverilog学习 ---- program和interfece
    【数仓基础(一)】基础概念:数据仓库【用于决策的数据集合】的概念、建立数据仓库的原因与好处
    学JAVA好?还是学Python好?
    探索AI交互:Python与ChatGPT的完美结合!
    学习Go语言中的文件操作函数并实现文件的压缩加密上传功能
    力扣第406题 根据身高重建队列 c++ 贪心思维
  • 原文地址:https://blog.csdn.net/lookout99/article/details/126481125