当前位置: 首页 > news >正文

程序实例python_Python花式编程案例集锦(5)

defdemo1(x, y, z):

product = -float('inf')

positions = ()

fori, v1 inenumerate(x):

forj, v2 inenumerate(y):

fork, v3 inenumerate(z):

t = v1*v2*v3

ift > product:

product = t

positions = (i, j, k)

return(product, positions)

仔细看上面的代码,虽然是Python的语法,但是整个代码散发着浓浓的C语言气息,换汤不换药啊。

74de1d75de01401f8203d5a07119fd9c.jpeg

仔细分析题意,大概可以知道,因为是乘法运算,所以从每个列表中选择最大数再相乘,应该也是符合题意的,于是编写代码如下:

# 利用Python内置函数和列表对象方法

defdemo2(x, y, z):

i = max(x)

iPos = x.index(i)

j = max(y)

jPos = y.index(j)

k = max(z)

kPos = z.index(k)

return(i*j*k, (iPos, jPos, kPos))

但是,上面的代码看上去还是很笨啊,傻傻的样子,并且和第一段代码一样不灵活,难道就没有更好的办法吗?

# 利用Python函数式编程特点

defdemo3(lst):

maxValues = tuple(map(max, lst))

f =lambdalst, item: lst.index(item)

positions = tuple(map(f, lst, maxValues))

product = eval('*'.join(map(str, maxValues)))

return(product, positions)

上面的代码减少了很多限制,比如可以处理3个以上的列表,对客户的需求改动不敏感。

28a039eb3ad146a7b41a4d51cb66e215.jpeg

那么,上面的几段代码是否等价呢,让我们用测试代码来说话,直接测试一亿次吧。注意第三个函数的调用方式与前两个略有区别。

921b9b65a651413fa588eff0420c7518.jpeg

# 测试代码,运行一亿次

fori inrange(10**8):

m = randrange(1, 30)

n = 3

x, y, z = getData(m, n)

if not(demo1(x,y,z) == demo2(x,y,z) == demo3((x,y,z))):

print(x,y,z)

把上面的代码整合到一起运行一下,没有任何输出,说明三个函数功能等价。

相关文章:

  • python装饰器作用和功能_Python装饰器实现类Java注解功能
  • 树莓派无屏幕安装kali_树莓派制作魔镜屏幕旋转不正确的处理方法
  • 没有与参数列表匹配的重载函数_C++覆盖和重载的区别
  • python嵌入式系统开发_python能开发单片机吗
  • python根据excel生成报表_python提取Excel中的特定列生成新的表格
  • python显示数据长度_python 读取数据再写入,文件大小总会出现变差?
  • datagrid如何获取一行数据中的某个字段值_UI测试中,我们应该注意哪些?
  • python常考题_python 一个批量出考题,生成不同考卷的小例题
  • python简历项目经验在哪里找_Linux运维工程师简历项目经验
  • matlab函数编写_实验二 | M函数与M文件的编写与应用
  • docker 部署_docker自动化部署前端项目实战
  • 如何将网站前端如何添加登录密码访问_如何将自己的网站上线到服务器端详解!...
  • python根据时间序列画折线图_如何根据时间序列金融数据画出分年对比的季节性图表...
  • tkinter.filedialog如何一次性选择多个文件_多个文档怎样一键重命名?用这款工具只需七步即可实现...
  • python同一层次的代码、缩进可以不一致_Python3缩进对逻辑的影响
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • AWS实战 - 利用IAM对S3做访问控制
  • Linux快速复制或删除大量小文件
  • mysql 5.6 原生Online DDL解析
  • php ci框架整合银盛支付
  • Vim Clutch | 面向脚踏板编程……
  • 阿里云应用高可用服务公测发布
  • 关于List、List?、ListObject的区别
  • 机器学习中为什么要做归一化normalization
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 使用SAX解析XML
  • 思维导图—你不知道的JavaScript中卷
  • 延迟脚本的方式
  • 最近的计划
  • ​比特币大跌的 2 个原因
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • $GOPATH/go.mod exists but should not goland
  • (12)目标检测_SSD基于pytorch搭建代码
  • (13):Silverlight 2 数据与通信之WebRequest
  • (C#)一个最简单的链表类
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (一)插入排序
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (转)Sublime Text3配置Lua运行环境
  • (转)四层和七层负载均衡的区别
  • .bashrc在哪里,alias妙用
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .Net转前端开发-启航篇,如何定制博客园主题
  • @Builder用法
  • @for /l %i in (1,1,10) do md %i 批处理自动建立目录
  • @KafkaListener注解详解(一)| 常用参数详解
  • @NoArgsConstructor和@AllArgsConstructor,@Builder
  • [BZOJ] 1001: [BeiJing2006]狼抓兔子
  • [BZOJ1877][SDOI2009]晨跑[最大流+费用流]
  • [IE编程] IE中使网页元素进入编辑模式
  • [IE编程] 如何编程清除IE缓存
  • [java/jdbc]插入数据时获取自增长主键的值
  • [LeetCode] 93. Restore IP Addresses 复原IP地址
  • [leetcode]Search a 2D Matrix @ Python
  • [LeetCode刷题笔记]1 - 两数之和(哈希表)