jad*_*dsq 2 python loops for-loop while-loop
在开始用C语言学习代码之后,我总是假设for循环和while循环,其中essentialy总是等价的(因为在一个中总是可以重现只使用另一个的行为).但是在python中从for循环到while循环总是微不足道的,我找不到实现反转的方法.
在python中,有没有办法只使用for循环来重现while循环(无限循环)的行为?
这是一个使用递归生成器不起作用的解决方案(因为递归限制):
def infinite_loopy():
yield "All work and no play makes Jack a dull boy"
for x in infinite_loopy():
yield x
#here starts the supposedly infinite-loop
for x in infinite_loopy():
print(x)
Run Code Online (Sandbox Code Playgroud)
您可以通过编写非yield迭代器类来完成此操作:
class Infinite(object):
def __iter__(self):
return self
def next(self): # For Python3, replace this with __next__
return 1
# Loops forever
for i in Infinite():
pass
Run Code Online (Sandbox Code Playgroud)
(如果你有耐心的话,你可以看到它在想法上停滞不前 - 这就像看油漆一样干燥).
您可以使用iter如下的双参数版本:
for _ in iter(int, 1):
print('All your loops are belong to us!')
Run Code Online (Sandbox Code Playgroud)
2参数形式iter将第一个参数调用为没有参数的函数.如果返回的值等于(==)第二个参数,StopIteration则引发,否则返回返回值.int()在没有参数的情况下调用返回0,这当然不等于1永远地产生0,并且我们有一个无限循环.
| 归档时间: |
|
| 查看次数: |
195 次 |
| 最近记录: |