韩顺平 | 零基础快速学Python(9~11) 排序查找

排序和查找

排序

排序:将多个数据按顺序排列。有冒泡、选择、插入、希尔、归并、快速、堆、计数、捅、基数排序。

冒泡排序

冒泡排序 Bubble Sorting:重复地走访需要排序地元素列表,依次比较相邻的元素,如果顺序错误就交换位置,直至完成。最大/最小元素会慢慢浮到顶/底端,形如冒泡。

num_list = [24, 69, 80, 57, 13, 22]
print("排序前".center(32, "-")) # ---排序前--- 参数为宽度和字符
print(f"num_list: {num_list}")# num_list.sort() #内置函数排序# 使用冒泡排序
def bubble_sort(my_list):"""功能:对传入的列表完成从小到大的排序:param my_list: 传入的列表:return: 无(修改列表会修改原列表)"""# i控制比较轮次for i in range(1, len(my_list)):# j控制比较的次数,同时可以作为比较元素的索引下标for j in range(0, len(my_list) - i):if my_list[j] > my_list[j + 1]:my_list[j], my_list[j + 1] = my_list[j + 1], my_list[j]# print(f"第{i}轮排序的结果my_list=", my_list)bubble_sort(num_list)
print("排序后".center(32, "-"))
print(f"num_list: {num_list}")

查找

常见的查找方法:顺序、二分、插值、斐波那契、数表、分块、哈希查找

顺序查找

names_list = ["白眉鹰王", "金毛狮王", "紫衫龙王", "青翼蝠王", "金毛狮王"]
find_name = "金毛狮王"# 使用list.index()查找
# res_index = names_list.index(find_name)
# print(res_index)# 使用顺序查找方法
def seq_search(my_list, find_val):#find_index = -1 # 只有一个结果find_index = [] # 不止一个结果for i in range(len(my_list)):if my_list[i] == find_val:# print(f"恭喜找到{find_val}")# find_index = ifind_index.append(i)# break# else: #未执行到break,进入else#     print(f"没有找到对应值{find_val}")return find_indexres_index = seq_search(names_list, find_name)
print(res_index)

二分查找

二分查找的前提是列表已排序,升序还是降序影响二分查找的代码逻辑,如从小到大的序列
1 找到列表的中间数mid_val 和 find_val比较
2 如果 mid_val > find_val,则到左边查找,否则右边查找,相等返回下标
3 循环1-2
4 如果while结束还没有找到,说明列表无该值

num_list = [1, 8, 10, 89, 1000, 1234]
def binary_search(my_list, find_val):left_index = 0right_index = len(my_list) - 1find_index = -1while left_index <= right_index:mid_index = (left_index + right_index) // 2mid_value = my_list[mid_index]if mid_value > find_val:right_index = mid_index - 1elif mid_value < find_val:left_index = mid_index + 1else:find_index = mid_indexbreakreturn find_indexres = binary_search(num_list, 1)
if res == -1:print("列表中无该值")
else:print(f"查找到该值下标为{res}")

断点调试

断点调试的控制按钮
F7 Step into:跳入方法/函数内
F8 Step over:跳过方法函数,逐行执行代码
shift+F8 Step out:跳出方法/函数
F9 resume:执行到下一个断点

模块和包

模块

介绍:Python把各种定义(函数、类、变量、可执行代码等)存入一个文件,在脚本或解释器的交互式实例中使用,这个.py文件即模块。

模块导入

import写在文件头
基本语法:

[from 模块名] import (函数 || 变量 | *) [as 别名] #[]可选import 模块1[, 模块2...] # 导入一个或多个模块,建议一行导入一个
模块.函数||变量 # 使用 .表层级关系from 模块 import 函数||变量 # 导入模块的指定功能
函数||变量 # 直接使用from 模块 import * # 导入模块的全部功能 ctrl+B查看模块全部功能
函数||变量 # 直接使用import 模块 as 别名 # 给导入的模块取别名
别名.函数||变量
from 模块 import 函数||变量... as 别名 # 给导入的功能取别名
别名 # 直接使用别名

自定义模块

执行可执行文件,若其中有导入模块,导入模块会执行模块文件中的可执行代码。

# module1.py
def hi():print("hi")
hi()# test.py
from module import *
hi()
"""
hi
hi
"""

当一个python模块或包被导入时,__name__会被设为模块的名称,通常是python文件名去掉后缀;如果模块是在最高层级代码/主程序中执行的,则它的__name__会被设为字符串__main__

# module1.py
def hi():print("hi")
hi()
print("module.py:", __name__)# test.py
from module import *
hi()
print("test.py:", __name__)
"""
hi
module1.py: module1
hi
test.py: __main__
"""
__name__

使用__name__可以避免模块中测试代码的执行。因为执行导入模块时,模块文件的__name__是模块名不等于__main__,所以不会执行模块文件中的可执行代码块;单独执行模块文件时__name__等于__main__,可以继续执行代码。

# module1.py
def hi():print("hi")
if __name__ == "__main__":hi()# test.py
from module import *
hi()
"""
hi 
"""
__all__

使用__all__可以控制 import * 时,那些功能被导入,其中 import 模块 方式不受该限制。

# module1.py
__all__ = ['hi'] # __all__ = ['hi', 'ok']
def hi():print("hi")
def ok():print("ok")
if __name__ == "__main__":hi()# test.py
from module1 import * # 只能导入hi函数
# import module1 #可以导入所有功能
hi()
"""
hi 
"""

包package

从结构上看,包就是一个文件夹,该文件夹下包含了一个__init__.py文件,该文件可用于包含多个模块文件;从逻辑上看,包可以视为模块集合。

  • 包可以有多个层级,通过.确定层级关系。
  • 快捷键alt+enter选择解决方案,shift+alt+enter直接导入
import 包名.模块 # 导入
包名.模块.功能 # 使用from 包名 import 模块 #导入
模块.功能 #使用from 包名.模块 import 函数||变量|* #导入
功能 #直接使用

__init__.py通过__all__控制包的允许导入的模块

# __init__.py
__all__ = [允许导入的模块列表] # 对from 包 import * 生效;对import xxx不生效

第三方库

常见的第三方库:网络爬、自动化、数据分析及可视化、web开发、机器学习、其他常用(如OpenCV图像和视频工作库)。(库中有框架、文件)
在这里插入图片描述在这里插入图片描述

pip安装

pip是Python的包管理器工具,允许安装和管理第三方库和依赖
1 进入到命令行控制台
2 语法:pip install 库名/包名

pip install package_name #安装
pip uninstall package_name #卸载
pip list #显示已安装列表

问题:如果执行pip命令出现

`pip` 不是内部或外部命令,也不是可运行程序

1 检查系统环境命令,是否在python3.xx/Scripts文件夹下是否有pythonx.xx\Scrips和pythonx.xx的路径,若没有则添加并应用确认
2 检查pythonx.xx\Scrips路径下是否有pip.exe文件,若没有则打开命令行窗口,执行python -m ensurepip

pip源

默认pip源

国内知名源地址:
豆瓣 https://pypi.douban.com.simple
清华大学 https://pypi.tuna.tsinghua.edu.cn/simple
阿里云 https://mirrors.aliyun.com/pypi/simple
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple

pip install -i 指定源地址 库名/包名
通过pycharm安装:Settings > Python Interpreter > + > Option[-i 指定镜像源地址]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/308396.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SSH穿透ECS访问内网RDS数据库

处于安全考虑&#xff0c;RDS一般只会允许指定的IP进行访问&#xff0c;而我们开发环境的IP往往是动态的&#xff0c;每次IP变动都需要去修改RDS的白名单&#xff0c;为我们的工作带来很大的不便。 那么如何去解决这个问题&#xff1f; 假如我们有一台ESC服务器&#xff0c;E…

简介:基于Web的产品3D

基于 Web 的产品 3D 通过可视化界面获得各种选项来个性化他们的产品&#xff0c;例如颜色、材料、尺寸、文字、徽标、零件等。 在过去几年中&#xff0c;随着 3D 建模和渲染软件的出现&#xff0c;3D 渲染现在更常用于营销和促销目的。设计师、制造商和营销人员使用 3D 产品渲…

【Kafka】Kafka 架构深入

Kafka 工作流程及文件存储机制 Kafka 中消息是以 topic 进行分类的&#xff0c;生产者生产消息&#xff0c;消费者消费消息&#xff0c;都是面向 topic 的。 topic 是逻辑上的概念&#xff0c;而 partition 是物理上的概念&#xff0c;每个 partition 对应于一个 log 文件&am…

11111111

c语言中的小小白-CSDN博客c语言中的小小白关注算法,c,c语言,贪心算法,链表,mysql,动态规划,后端,线性回归,数据结构,排序算法领域.https://blog.csdn.net/bhbcdxb123?spm1001.2014.3001.5343 给大家分享一句我很喜欢我话&#xff1a; 知不足而奋进&#xff0c;望远山而前行&am…

MT3020 任务分配

思路&#xff1a;利用二分找到某个时间是满足“k个人可以完成” &#xff0c;并且时间最小。 因为尽量让后面的人做任务&#xff0c;所以从后往前排任务&#xff08;倒着分配&#xff09;。从后往前遍历任务&#xff0c;如果此人加上这个任务超出之前求得的时间&#xff0c;就…

逐步学习Go-sync.RWMutex(读写锁)-深入理解与实战

概述 在并发编程中&#xff0c;我们经常会遇到多个线程或协程访问共享资源的情况。为了保护这些资源不被同时修改&#xff0c;我们会用到"锁"的概念。 Go中提供了读写锁&#xff1a;sync.RWMutex。 sync.RWMutex是Go语言提供的一个基础同步原语&#xff0c;它是Rea…

Nikon | NEF格式图片批量转换为jpg格式

如何将nikon相机拍的NEF格式图片转换为jpg格式呢&#xff1f; 这里推荐一个在线转换的网址&#xff1a; https://picflow.com/convert/nef-to-jpg 添加图片后&#xff0c;可以批量选择图片&#xff0c;点击转换后即可进行下载

74HC595引脚图时序图工作原理

74HC595和74hc164一样是在单片机系统中常用的芯片之一他的作用就是把串行的信号转为并行的信号&#xff0c;常用在各种数码管以及点阵屏的驱动芯片&#xff0c; 使用74HC595可以节约单片机mcu的io口资源&#xff0c;用3个io就可以控制8个数码管的引脚&#xff0c;他还具有一定的…

[攻防世界]Reversing-x64Elf-100

1.查壳 无壳&#xff0c;ELF文件 2.用IDA64打开 找到关键部分 这里有坑&#xff0c;看清楚v3是长度为3数组&#xff0c;里面放三个字符串 3.脚本解密 v1"Dufhbmf" v2"pGimos" v3"ewUglpt" v4[v1,v2,v3] a1[0,0,0,0,0,0,0,0,0,0,0,0] for i …

乐趣Python——办公魔法:Word文件自动化

嘿&#xff0c;朋友们&#xff01;在这个办公小课堂中&#xff0c;我将为大家揭开一个神奇的秘密&#xff1a;Word文件自动化处理&#xff01; 通过这种魔法般的方式&#xff0c;我们可以大大提高办公效率&#xff0c;减少重复性工作。而Python作为我们的助手&#xff0c;将展现…

JavaSE-12笔记【集合1(+2024新)】

文章目录 1. 集合概述2.Collection2.1 Collection继承结构&#xff08;基于Java21&#xff09;2.2 Collection接口的常用方法2.3 Collection的遍历&#xff08;集合的通用遍历方式&#xff09;2.4 所有的有序集合都实现了SequencedCollection接口2.5 泛型2.5.1 如何判断是否可以…

防止狗上沙发,写一个浏览器实时识别目标检测功能

家里有一条狗&#x1f436;&#xff0c;很喜欢乘人不备睡沙发&#x1f6cb;️&#xff0c;恰好最近刚搬家 狗迎来了掉毛期 不想让沙发上很多毛。所以希望能识别到狗&#xff0c;然后播放“gun 下去”的音频&#x1f4e3;。 需求分析 需要一个摄像头&#x1f4f7; 利用 chrome…

Mapmost Alpha:开启三维城市场景创作新纪元

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

vue3中使用antv-S2表格(基础功能版)

先看展示效果&#xff1a; 可以调整行宽、列宽、自定义字段图标、表头图标、添加排序、显示总计、小计等 首先确保搭建一个vue3项目环境&#xff0c;从0开始的小伙伴着重看第一点&#xff1a; 一、搭建vue3项目环境 首先创建一个vue3vitets项目&#xff0c;可以查看下面相关…

头歌-机器学习实验 第8次实验 决策树

第1关&#xff1a;什么是决策树 任务描述 本关任务&#xff1a;根据本节课所学知识完成本关所设置的选择题。 相关知识 为了完成本关任务&#xff0c;你需要掌握决策树的相关基础知识。 引例 在炎热的夏天&#xff0c;没有什么比冰镇后的西瓜更能令人感到心旷神怡的了。现…

Spark-Scala语言实战(16)

在之前的文章中&#xff0c;我们学习了三道任务&#xff0c;运用之前学到的方法。想了解的朋友可以查看这篇文章。同时&#xff0c;希望我的文章能帮助到你&#xff0c;如果觉得我的文章写的不错&#xff0c;请留下你宝贵的点赞&#xff0c;谢谢。 Spark-Scala语言实战&#x…

使用doop识别近commons text漏洞的污点信息流

一、doop静态分析框架简介 1. doop静态分析框架简介 doop静态分析框架由希腊雅典大学plast-lab Yannis Smaragdakis团队设计开发&#xff0c;目前看是一款开源领域的比较先进的程序静态分析框架&#xff0c;一些程序静态分析论文的理论也有通过doop的规则实现后实验。 doop整…

c 解数独(通用方法,适用于9×9 数独)

折腾了一周时间&#xff0c;终于搞定99数独通用方法 思路&#xff1a;1.生成每行空位的值&#xff0c;也就是1-9中除去非0的数。 2.用行&#xff0c;列&#xff0c;宫判断每行中每个空位的最小取值范围后再重新生成每行。 3.随机提取生成的9行&#xff0c;判断每列之和是否等…

【数据结构与算法】:二叉树经典OJ

目录 1. 二叉树的前序遍历 (中&#xff0c;后序类似)2. 二叉树的最大深度3. 平衡二叉树4. 二叉树遍历 1. 二叉树的前序遍历 (中&#xff0c;后序类似) 这道题的意思是对二叉树进行前序遍历&#xff0c;把每个结点的值都存入一个数组中&#xff0c;并且返回这个数组。 思路&…

解决 IDEA每次打开新的项目都要重新设置maven问题

目录 一、当前项目设置maven 如下图&#xff1a; 二、设置打开的新项目的maven 如下图&#xff1a;​ 一、当前项目设置maven 对于当前项目我们都知道设置maven的配置要在 File -- Settings -- Build -- Maven 中设置 如下图&#xff1a; 二、设置打开的新项目的maven F…