首页 / PYTHON / 简化Python迭代
简化Python迭代
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了简化Python迭代,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1235字,纯文字阅读大概需要2分钟。
内容图文
![简化Python迭代](/upload/InfoBanner/zyjiaocheng/753/2b2b725384c24005b365b1b49d9350f5.jpg)
每当我尝试解决一些数学问题,比如找到一定数量因素的特定产品,我就用Python做
for x in xrange(1,10):
for y in xrange(1,10):
for z in xrange(1,10):
product = x * y * z
if product == 36:
print "factors : {0},{1},{2}".format(x,y,z)
在这个例子中,它非常简单并快速完成工作,但我想知道你们是否知道更简单或更简单的方法来编写它.关于如何做到这一点的任何想法,而不是使用那么多迭代或反复重复几乎相同的代码.这显然是有3个因素,但我添加的因素越多,代码越长,重复性越高.关于如何简化这类简单问题的代码的任何想法?
谢谢
解决方法:
Itertool的cartesian product模拟了多个嵌套for循环的效果.
import itertools
for x, y, z in itertools.product(range(1,10), range(1,10), range(1,10)):
product = x * y * z
if product == 36:
print "factors : {0},{1},{2}".format(x,y,z)
结果:
factors : 1,4,9
factors : 1,6,6
factors : 1,9,4
(...etc)
如果x,y和z中的每个范围始终相同,则只需指定一次:
for x, y, z in itertools.product(range(1,10), repeat=3):
如果您厌倦了为product =行键入数字星号,则可以使用reduce将任意数量的参数相乘:
for factors in itertools.product(range(1,3), repeat=10):
product = reduce(lambda x, y: x*y, factors)
一旦您的格式字符串变得难以处理,您可以依赖连接将字符串组合在一起:
if product == 512:
#use `map` to turn the factors into strings, first
print "factors: " + ",".join(map(str, factors))
内容总结
以上是互联网集市为您收集整理的简化Python迭代全部内容,希望文章能够帮你解决简化Python迭代所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。