Python 可重用无界范围
这里有关于无限Python 可重用无界范围,python,iterable,Python,Iterable,这里有关于无限范围的问题,所有人都推荐itertools.count。但是,range有一个功能,count不能重复使用 a = range(100) # Prints 0 1 2 3 for i in a: print(i) if i >= 3: break # Prints 0 1 2 3 for i in a: print(i) if i >= 3: break from itertools import c
范围的问题,所有人都推荐itertools.count
。但是,range
有一个功能,count
不能重复使用
a = range(100)
# Prints 0 1 2 3
for i in a:
print(i)
if i >= 3:
break
# Prints 0 1 2 3
for i in a:
print(i)
if i >= 3:
break
from itertools import count
b = count(0)
# Prints 0 1 2 3
for i in b:
print(i)
if i >= 3:
break
# Prints 4, does not use a fresh count(0)
for i in b:
print(i)
if i >= 3:
break
有没有一种方法可以重用itertools.count
或以其他方式获得一个可重用/重新启动的无限iterable?根本问题是range
是一个iterable
而count
是一个迭代器Iterator
s是具有\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu\uuuuuuuuuuuu\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu\uuuuuuuuuuuuuuuuuu
一种解决方案是只需创建自己的Iterable
版本的count
,只要调用它的\iter\uuu
方法,它就会简单地返回itertools.count
from itertools import count
class Count:
def __init__(self, start=0):
self.start = start
def __iter__(self):
return count(self.start)
基本问题是range
是Iterable
,count
是迭代器Iterator
s是具有\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu\uuuuuuuuuuuu\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu\uuuuuuuuuuuuuuuuuu
一种解决方案是只需创建自己的Iterable
版本的count
,只要调用它的\iter\uuu
方法,它就会简单地返回itertools.count
from itertools import count
class Count:
def __init__(self, start=0):
self.start = start
def __iter__(self):
return count(self.start)
是的,请看这个答案:是的,请看这个答案: