加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python:带有两个变量的C for循环

发布时间:2020-12-20 12:30:10 所属栏目:Python 来源:网络整理
导读:我是 python的新手.有没有类似的方法在python中用2个变量编写这个C for循环? for (i = 0,j = 20; i != j; i++,j--) { ... } 解决方法 Python 2.x from itertools import izip,countfor i,j in izip(count(0,1),count(20,-1)): if i == j: break # do stuff
我是 python的新手.有没有类似的方法在python中用2个变量编写这个C for循环?

for (i = 0,j = 20; i != j; i++,j--) { ... }

解决方法

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)):
    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,j in takewhile(lambda x: x[0] != x[1],izip(count(0,-1))):
    # do stuff

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读