Python有一种在for循环中自动生成计数器变量的优雅方法:enumerate函数.这节省了初始化和递增计数器变量的需要.计数器变量也很难看,因为它们在循环完成后通常是无用的,但它们的范围不是循环的范围,因此它们不需要占用命名空间(尽管我不确定是否enumerate实际解决了这个问题).
我的问题是,是否存在类似于while循环的pythonic解决方案.因为返回一个迭代器,enumerate它将不适用于while循环enumerate.理想情况下,解决方案应该是"pythonic",不需要函数定义.
例如:
x=0
c=0
while x<10:
x=int(raw_input())
print x,c
c+=1
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我们希望避免初始化和递增c.
澄清:
这可以通过for手动终止的无限循环来完成,正如一些人所建议的那样,但我正在寻找一种能够使代码更清晰的解决方案,并且我认为这种解决方案不会使代码更清晰.
对伊格纳西奥的回答有所改进(可读性,我会说):
x = 0
for c in itertools.takewhile(lambda c: x < 10, itertools.count()):
x = int(raw_input())
print x, c
Run Code Online (Sandbox Code Playgroud)
好处:
再次与itertools......
import itertools
for c, x in enumerate(
itertools.takewhile(lambda v: v < 10,
(int(raw_input()) for z in itertools.count())
)
):
print c, x
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4755 次 |
| 最近记录: |