Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 有没有办法使贴图对象重复?_Python - Fatal编程技术网

Python 有没有办法使贴图对象重复?

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对象:
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)
有效,但对于拼写普通的old
int

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
来说,这是一种昂贵且晦涩的拼写方法