c语言中for 两个变量,Python:带有两个变量的C for循环

Python 2.x

from itertools import izip, count

for i, j in izip(count(0, 1), count(20, -1)):

if i == j: break

# do stuff

Python 3.x:

from itertools import count

for i, j in zip(count(0, 1), count(20, -1)):

if i == j: break

# do stuff

这使用itertools.count(),它是一个无限期地从某个起始点迭代的迭代器:

itertools.count(start=0, step=1)

Make an iterator that returns evenly spaced values starting with n. Often used as an argument to imap() to generate consecutive data points. Also, used with izip() to add sequence numbers.

在Python 2.x中你必须使用izip,因为Py2K zip尝试创建所有结果的列表,而不是izip,它会在获得结果时返回迭代器.不幸的是我们在这里处理无限迭代器所以zip不起作用…这可能是一个很好的点,为什么zip已被更改为在Py3K中执行izip的角色(izip不再存在).

如果你对功能感到疯狂,你甚至可以做到这一点(但在我看来,因为我已经成长为讨厌lambdas而看起来很难看):

from itertools import takewhile, izip, count

for i, j in takewhile(lambda x: x[0] != x[1], izip(count(0, 1), count(20, -1))):

# do stuff

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值