百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Python案例篇:七个Python高阶案例(晕题的不要轻易看)

itomcoil 2025-02-11 12:13 41 浏览

目录

引言

一、排序及自定义函数之案例一:选择排序

二、匿名函数的定义和使用

三、高阶函数练习题

四、高阶函数练习题

五、求两个列表元素的和,返回新列表

六、求字符串中每个单词的长度

七、接收函数作为参数,或者将函数作为返回值

一、排序及自定义函数之案例一:选择排序

案例一:选择排序

使用选择排序的思想实现列表数据的升序排序

参考代码:

lt=[45,12,56,-32,-3,44,75,-22,100]
length=len(lt)
# print('排序前:'+str(lt))
for i in range(0,length-1):
    #内层循环呢控制每一轮执行的次数,j可以认为是比较空间或箭头
    for j in range(i+1,length):
        #判断两空间中的内容,如果选中空间比比较空间中的数据大,则交换数据
        if lt[i]>lt[j]:
            #temp=lt[i]
            #lt[i]=lt[j]
            #lt[j]=temp
            lt[i],lt[j]=lt[j],lt[i]
# print('排序后:'+str(lt))

二、匿名函数的定义和使用

需求:字符串数据’This is \n a \latiao’ --> 得到’This is a test’

步骤一:使用字符串的split()函数–>作用:可以默认去除字符串中的空格、\n、\t等内容

然后将字符串数据以列表的形式返回

步骤二:使用字符串的join()函数–>以空格作为连接的格式,将列表中的元素连接成为一个字符串数据返回

str1='this is \na \latiao'
lt=str1.split()
print(lt)
 
str2=' '.join(lt)
print(str1,type(str1))
print(str2,type(str2))
 
print(lambda x:' '.join(x.split())(str1))

三、高阶函数练习题

1.lt = ['sdfasdfa', 'ewqrewrewqr', 'dsafa12312fdsafd', 'safsadf']

–> 得到长度列表

2.tp = ('TOM', 'Lilei', 'JAck', ‘HanmeiMeI’)

–> 得到列表(所有元素的首字母大写)

3.
lt1 = [1,2,3,4]
lt2 = [5,6,7,8]
计算得到:lt1[0]lt2[0] + lt1[1]lt2[1] + ...
 15 + 26 +

最终得到累加以后的值
参考代码:

from functools import reduce
lt = ['sdfasdfa', 'ewqrewrewqr', 'dsafa12312fdsafd', 'safsadf']
print(list(map(len,lt)))
 
tp = ('TOM', 'Lilei', 'JAck','HanmeiMeI')
 
#自定义函数:
def func(name):
    return name.capitalize()
 
print(list(map(func,tp)))
print(list(map(lambda x:x.capitalize(),tp)))
print(list(map(str.capitalize,tp)))
 
lt1=[1,2,3,4,5]
lt2=[5,6,7,8]
 
#使用map的思想得到组合数据对象(map类型),对象中的元素内容为:15 26 37 48
lt1_map=map(lambda x:x*10,lt1) #map中的内容为:10,20,30,40
ret_map=map(lambda x,y:x+y,lt1_map,lt2) #map中的内容为:15,26,37,48
print(list(lt1_map))
print(list(ret_map))
 
#使用reduce的思想将map对象中的数据进行累加
num=reduce(lambda x,y: x + y,ret_map)
print('和值为: %s' %num)

四、高阶函数练习题

高阶函数以及匿名函数之间的配合使用

from functools import reduce
#模块一:lambda和filter的结合使用
#lt = [1,2,3,4,5,6,7,8,9] --> [3,6,9]]
lt = [1,2,3,4,5,6,7,8,9]
print(list(filter(lambda x:x%3==0,lt)))
 
#模块二:lambda和map的结合使用
#容器/序列对象:range对象
mo=map(lambda x:x**2,range(5))
print(list(mo))
 
#模块三:
'''
在模块二的基础上扩展功能:range(10)
过滤以后保留的数据范围为:(5,50)之间
'''
mo=map(lambda x:x**2,range(10))
fo=filter(lambda x:x>5 and x<50,mo)
print(list(fo))
 
#模块四:lambda和reduce配合使用
lt=[1,2,3,4,5]
my_sum=reduce(lambda x,y:x+y,lt)
print(my_sum)

五、求两个列表元素的和,返回新列表

参考代码:

lt1=[1,2,3,4]
lt2=[5,6]
print(list(map(lambda x,y:x+y,lt1,lt2)))

六、求字符串中每个单词的长度

参考代码:

content = 'Welcome To latiao'
word_list=content.split()
mo=map(len,word_list)
print(list(mo),type(mo))

七、接收函数作为参数,或者将函数作为返回值

接收函数作为参数,或者将函数作为返回值

# 创建一个列表
l = [1,2,3,4,5,6,7,8,9,10]

# 定义一个函数,用来检查一个任意的数字是否是偶数。
def fn2(i) :
    if i % 2 == 0 :
        return True

    return False    

# 这个函数用来检查指定的数字是否大于5
def fn3(i):
    if i > 5 :
        return True    
    return False
# 这个函数可以将3的倍数取出
def fn4(i):
    if i % 3 == 0 :
        return True
    return False

def fn(func , lst) :# 定义高阶函数fn

    # 创建一个新列表
    new_list = []

    # 对列表进行筛选
    for n in lst :
      new_list.append(n)
    # 返回新列表
    return new_list
#此时就可以随意调用不同的函数来获得不同的结果了,
#只需要改变高阶函数fn的两个参数即可。     
print(fn(fn4 , l))#此时调用的是fn4,列表是l,即意味着取出l列表中所有能被3整除的数。

相关推荐

selenium(WEB自动化工具)

定义解释Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7,8,9,10,11),MozillaF...

开发利器丨如何使用ELK设计微服务中的日志收集方案?

【摘要】微服务各个组件的相关实践会涉及到工具,本文将会介绍微服务日常开发的一些利器,这些工具帮助我们构建更加健壮的微服务系统,并帮助排查解决微服务系统中的问题与性能瓶颈等。我们将重点介绍微服务架构中...

高并发系统设计:应对每秒数万QPS的架构策略

当面试官问及"如何应对每秒几万QPS(QueriesPerSecond)"时,大概率是想知道你对高并发系统设计的理解有多少。本文将深入探讨从基础设施到应用层面的解决方案。01、理解...

2025 年每个 JavaScript 开发者都应该了解的功能

大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发。1.Iteratorhelpers开发者...

JavaScript Array 对象

Array对象Array对象用于在变量中存储多个值:varcars=["Saab","Volvo","BMW"];第一个数组元素的索引值为0,第二个索引值为1,以此类推。更多有...

Gemini 2.5编程全球霸榜,谷歌重回AI王座,神秘模型曝光,奥特曼迎战

刚刚,Gemini2.5Pro编程登顶,6美元性价比碾压Claude3.7Sonnet。不仅如此,谷歌还暗藏着更强的编程模型Dragontail,这次是要彻底翻盘了。谷歌,彻底打了一场漂亮的翻...

动力节点最新JavaScript教程(高级篇),深入学习JavaScript

JavaScript是一种运行在浏览器中的解释型编程语言,它的解释器被称为JavaScript引擎,是浏览器的一部分,JavaScript广泛用于浏览器客户端编程,通常JavaScript脚本是通过嵌...

一文看懂Kiro,其 Spec工作流秒杀Cursor,可移植至Claude Code

当Cursor的“即兴编程”开始拖累项目质量,AWS新晋IDEKiro以Spec工作流打出“先规范后编码”的系统工程思维:需求-设计-任务三件套一次生成,文档与代码同步落地,复杂项目不...

「晚安·好梦」努力只能及格,拼命才能优秀

欢迎光临,浏览之前点击上面的音乐放松一下心情吧!喜欢的话给小编一个关注呀!Effortscanonlypass,anddesperatelycanbeexcellent.努力只能及格...

JavaScript 中 some 与 every 方法的区别是什么?

大家好,很高兴又见面了,我是姜茶的编程笔记,我们一起学习前端相关领域技术,共同进步,也欢迎大家关注、点赞、收藏、转发,您的支持是我不断创作的动力在JavaScript中,Array.protot...

10个高效的Python爬虫框架,你用过几个?

小型爬虫需求,requests库+bs4库就能解决;大型爬虫数据,尤其涉及异步抓取、内容管理及后续扩展等功能时,就需要用到爬虫框架了。下面介绍了10个爬虫框架,大家可以学习使用!1.Scrapysc...

12个高效的Python爬虫框架,你用过几个?

实现爬虫技术的编程环境有很多种,Java、Python、C++等都可以用来爬虫。但很多人选择Python来写爬虫,为什么呢?因为Python确实很适合做爬虫,丰富的第三方库十分强大,简单几行代码便可实...

pip3 install pyspider报错问题解决

运行如下命令报错:>>>pip3installpyspider观察上面的报错问题,需要安装pycurl。是到这个网址:http://www.lfd.uci.edu/~gohlke...

PySpider框架的使用

PysiderPysider是一个国人用Python编写的、带有强大的WebUI的网络爬虫系统,它支持多种数据库、任务监控、项目管理、结果查看、URL去重等强大的功能。安装pip3inst...

「机器学习」神经网络的激活函数、并通过python实现激活函数

神经网络的激活函数、并通过python实现whatis激活函数感知机的网络结构如下:左图中,偏置b没有被画出来,如果要表示出b,可以像右图那样做。用数学式来表示感知机:上面这个数学式子可以被改写:...