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语言气息,换汤不换药啊。

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

# 利用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个以上的列表,对客户的需求改动不敏感。

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

# 测试代码,运行一亿次

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花式编程案例集锦(5)相关推荐

  1. Python花式编程案例集锦(9):sorted()函数中消失的cmp参数

    明天开启全国巡讲Python模式,连续8场20天讲课,外加路上来回大约16天,这个假期有的忙了.所以接下来的一段时间里不一定能像以前更新的那么频繁,我尽量. 在很久很久很久以前,公众号曾经推送过这样一 ...

  2. Python花式编程案例集锦(8):判断吉祥数字

    问题描述:在有些文化中,认为含有8的数字是吉祥数字,能给自己带来好运.要求编写一个函数测试给定的数字是否为吉祥数字. 参考代码: 代码运行没有输出,说明两种方法是等价的. 思考题:在checkLuck ...

  3. Python花式编程案例集锦(7):判断回文

    所谓回文,是指一个词或一句话,正着读和反着读都一样,例如eye,did之类的单词. 参考代码: 运行结果: ----------相关阅读---------- 1900页Python系列PPT分享一:基 ...

  4. Python花式编程案例集锦(6)

    问题描述:输出"水仙花数".所谓水仙花数是指1个3位的十进制数,其各位数字的立方和等于该数本身.例如:153是水仙花数,因为153 = 1^3 + 5^3 + 3^3 . #参考代 ...

  5. Python花式编程案例集锦(5)

    问题描述: 输入三个序列,例如:[0.9,0.5,0.7],[0.4,0.6,0.3],[0.5,0.2,0.4],输出三个序列中各取一个相乘后最大的值,以及组合方式,如最大值为0.9*0.6*0.5 ...

  6. Python花式编程案例锦集(4)

    本文涉及问题是小米笔试题,问题描述:有一个整数列表,要求调整元素顺序,把所有奇数都放到前面,偶数都放到后面. 参考代码: # 带有C味道的Python代码 def demo1(intList):    ...

  7. Python花式编程案例锦集(3)

    严格来说,本文的2个代码不算花式编程,在Python中就应该是这样写. 1.生成包含20个随机数的列表,然后删除其中的所有奇数. from random import randrange lst = ...

  8. Python花式编程案例锦集(2)

    问题描述:编写函数,计算形式如a + aa + aaa + aaaa + ... + aaa...aaa的表达式的值,其中a为小于10的自然数. 相信大多数朋友会直接给出下面的代码: def demo ...

  9. python经典程序实例代码,python编程应用实例

    python递归算法经典实例有哪些? 程序调用自身的编程技巧称为递归( recursion).递归做为一种算法在程序设计语言中广泛应用. 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法. ...

最新文章

  1. Gitlab 官方对整个数据删除事件的详细说明
  2. pytorch:一维线性回归(二)
  3. oracle误删数据的解决方法
  4. 防止ASP.NET按钮多次提交的办法
  5. Conversion of Continuous-Valued Deep Networks to Efficient Event-Driven Networks for Image Classific
  6. python文件之间如何互相通信_不同的類和.py文件之間的python通信
  7. SpringMVC工作总结001_SpringMVC拦截器(资源和权限管理)
  8. python提取数组元素_python简单获取数组元素个数的方法
  9. mysql语句事务回滚_mysql语句,事务处理回滚的问题。
  10. mysq 没有mysql数据库_mysq 没有mysql数据库
  11. adb.exe可能被其他程序关闭_如何开启或关闭MacBook
  12. html全局事件,HTML5全局属性和事件
  13. day09 CDN绕过漏洞回链接口探针全网扫描反向邮件
  14. OpenCV 常用网址和基础知识
  15. win10截图快捷键
  16. linux网络工程师简历 项目经验,参加Linux面试简历中的项目经验该怎么写?
  17. xlsxwriter
  18. win10系统如何设置局域网服务器地址,Win10怎么设置局域网IP地址
  19. django国际化与本地化
  20. viper4Android md风格,ViPER4Android音效 XHIFX版

热门文章

  1. “三次握手,四次挥手”这么讲,保证你忘不了
  2. SSL数字证书之CA根证书、CA中间证书和SSL证书
  3. [原] 手擀寿面祝妈妈生日快乐
  4. 用js做购物界面的常用效果
  5. 用友BIP产品矩阵亮相首届中小企业数字化转型大会,数智创新驱动企业高效成长
  6. 【修真院java小课堂】clean,install,package,deploy分别代表什么含义?
  7. c语言数独出题程序,我用C语言写解数独程序(一)
  8. Win7开启无线热点AP
  9. Early Convolutions Help Transformers See Better
  10. Win7安装.net4.0失败如何解决_离水的鱼_新浪博客