python代码如何做成应用程序_Python生成器代码应用举例

在写程序中,我们要注意总结一些常用技巧,比如说List Comprehensions,Dict Comprehensions,Generator以前其他的一些提高效率的写法。

在Generator中,一种很常见的用法就是yield的使用,每次在调用Generator的next()函数时,都会从上次执行到的yield语句处开始执行。

有的时候,我们要在一组“给定的数”中寻找满足“某种条件”的数字”组合“,怎么办?

具体一点,比如说我们要在1~100这些数中寻找和为50的两两数字组合,如何求解?下面给出我的代码:

# coding:utf-8

a = [i for i in xrange(100)]

b = {i+1:True for i in a}

print b

def fun(integer):

for i in xrange(100):

for j in xrange(i+1, 100):

if b.get(i) and b.get(j) and i+j==integer:

yield i, j

integer = 50

obj = fun(integer) # generator

while 1: # while 1 is faster than while True

try:

print obj.next()

except Exception as e:

print e

break

同理,当我们要在1~100这些数中寻找和为50的三三数字组合,可以采用如下代码实现:

# coding:utf-8

a = [i for i in xrange(100)]

b = {i+1:True for i in a}

print b

def fun(integer):

for i in xrange(100):

for j in xrange(i+1, 100):

for k in xrange(j+1, 100):

if b.get(i) and b.get(j) and b.get(k) and i+j+k==integer:

yield i, j, k

integer = 50

obj = fun(integer) # generator

while 1: # while 1 is faster than while True

try:

print obj.next()

except Exception as e:

print e

break

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值