Python 有没有办法使贴图对象重复?
假设我有一个map对象:Python 有没有办法使贴图对象重复?,python,Python,假设我有一个map对象:map(lambda x:int(x),“123”),但我想要6个项目,我希望1,2,3,1,2,3(注意,我不想要列表格式,我会使用next来获取每个项目),但我只会在取出3个项目后得到一个StopIteration错误。我确实有一个解决办法,但没有我想要的那么干净: def MakeMap(): return map(lambda x:int(x), "123") mapped=MakeMap() for i in range(6): try:
map(lambda x:int(x),“123”)
,但我想要6个项目,我希望1,2,3,1,2,3
(注意,我不想要列表格式,我会使用next来获取每个项目),但我只会在取出3个项目后得到一个StopIteration错误。我确实有一个解决办法,但没有我想要的那么干净:
def MakeMap(): return map(lambda x:int(x), "123")
mapped=MakeMap()
for i in range(6):
try:
print(next(mapped))
except StopIteration:
mapped=MakeMap()
print(next(mapped))
虽然这是可行的,但如上所述,我希望它与以下一样简单:
mapped=map(lambda x:int(x), "123")
for i in range(6):
print(next(mapped))
还有其他方法可以这样做吗?
itertools.cycle
是(无限期)重复任何迭代器序列的一般方法
>>> from itertools import cycle
>>> mapped = cycle(map(int, "123"))
>>> for i in range(6):
... print(next(mapped))
1
2
3
1
2
3
请注意另一个变化:
lambda x:int(x)
有效,但对于拼写普通的oldint
itertools来说,这是一种昂贵且晦涩的方法。cycle
是(无限期)重复任何迭代器序列的一般方法
>>> from itertools import cycle
>>> mapped = cycle(map(int, "123"))
>>> for i in range(6):
... print(next(mapped))
1
2
3
1
2
3
请注意另一个变化:lambda x:int(x)
有效,但对于普通的int
来说,这是一种昂贵且晦涩的拼写方法