IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python基础篇——列表与列表算法(下) -> 正文阅读

[Python知识库]python基础篇——列表与列表算法(下)

python基础篇——列表与列表算法(下)


??hello!我是wakeyo_J,每天一个konwledge point,一起学python,让技术无限发散。


本次案例来源于《python编程从零基础到项目实战》–刘瑜(著)

1. 案例【三酷猫列表记账】

操作需求:
(1)用列表对象记录三酷猫每天钓鱼的种类和数量
(2)统计三酷猫所钓水产品的总数量和预计收获金额
(3)打印财务报表一张。
在这里插入图片描述

#三酷猫列表记账
nums = 0              #统计数量变量
amount = 0              #统计金额数量
i = 0                   #循环控制变量
fish_record = ['1月1日','鲫鱼',18,10.5,'1月1日','鲤鱼',8,6.2,'1月1日','鲢鱼',7,4.7,'1月2日','草鱼',2,7.2,'1月2日','鲫鱼',3,12,'1月2日','黑鱼',6,15,'1月3日','乌龟',1,71,'1月3日','鲫鱼',1,9.8]
print('钓鱼日期名称数量单价(元)')
print('-'*30)
while i<len(fish_record):
    nums = nums + fish_record[i+2]      #累计数量
    amount = amount + fish_record[i+2]*fish_record[i+3]   #累计金额
    print('%s,%s,%.2f,%.2f'%(fish_record[i],fish_record[i+1],fish_record[i+2],fish_record[i+3]))
    i += 4                  #循环控制
print('-'*30)
print('        总数:%d,总金额%.2f元'%(nums,amount))

结果:
在这里插入图片描述

2. 案例【三酷猫冒泡法排序】

冒泡排序:通过不断调整排序元素的次序,实现集合元素从小到大的排序过程。

** 冒泡排序过程**
(1)取左边第一个元素,然后与后面的元素进行比较,若发现后面的元素比第一个元素小,则交换位置,继续往后比较,一直比较调整到最后一个元素,该元素为最大的元素。
(2)再取第一个元素,根据第一步一次比较、调整,直到倒数第二个停止;其他元素都依次循环比较、调整,每次循环多减一次,n-m(n为集合长度,m为每循环一次,增加一次,m从0 开始)。
(3)所有元素比较、调整完毕,完成集合元素增序排序。

冒泡法排序示意图
在这里插入图片描述

fish_records = [18,8,7,2,3,6,1,1]
i = 0                               #循环控制变量
compare = 0                         #比较元素初始值
fish_len = len(fish_records)        #获取列表长度
while i<fish_len:
    j = 1                           #循环控制变量
    while j<fish_len-i:             #循环一遍,长度减1
        if fish_records[j-1]>fish_records[j]:   #比较前后两个元素的大小
            compare = fish_records[j-1]         #前一个大的放到临时比较变量里
            fish_records[j-1] = fish_records[j] #把小的元素放到前面
            fish_records[j] = compare           #把临时变量里的大元素放到后面
        j += 1                      #内循环控制变量+1
    i += 1                          #外循环控制变量+1
print(fish_records)

结果:
在这里插入图片描述

3. 案例【三酷猫二分法查找】

二分法查找:指在有序集合里,对集合下标范围通过取中位法获取对应的元素值,进行叠代查找比较,直至找到所需要的元素。如set1[1…N],(1…N为集合元素下标顺序值)先取一个下标中位值K1= (1+N)/2,获取set1[K1]值与查找对象M进行比较。若set1[K1]等于M,则查找成功,返回查找位置;若set1[K1]小于M,则在[K+1,N]区间里再取中位值,进行查找比较;若set1[K1]大于M,则在[1,K-1]区间里再取中位值,进行查找比较。通过不断缩小查找区间范围,可以快速获取所需要查找的值。

fish_records = [1,1,2,3,6,7,8,18]
low = 0                             #查找范围下界
high = len(fish_records)-1          #查找范围上界
find_value = 7                      #要寻找的值
find_OK = False                     #是否找到标志,True为找到
i = 1
while low<=high:
    middle = int((low+high)/2)       #用int取整数,避免浮点数问题的发生
    if find_value == fish_records[middle]:   #找到时
        find_OK = True                       #设置标志为True
        break
    elif find_value>fish_records[middle]:   #没有找到,要找的值范围大于中位值时
        low = middle+1                      #范围在middle+1和high之间
    elif find_value<fish_records[middle]:   #没有找到,要找的值范围小于中间值时
        high = middle-1                     #范围在low和middle-1之间
    i += 1
    if find_OK:
        print('%d在列表下标%d处,找了%d次。'%(find_value,middle,i))
    else:
        print('要找的数%d没有!找了%d次。'%(find_value,i))

结果:
在这里插入图片描述
代码运算示意图:
在这里插入图片描述


总结

??本文属于作者原创,转载请注明出处,不足之处,希望大家能过给予宝贵的意见,如有侵权,请私信。每天一个knowledge point,一起学python,让技术无限发散。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-07-26 12:02:42  更:2021-07-26 12:03:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 8:18:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码