python2.7itertools星图

2024-05-12 18:05:20 发布

您现在位置:Python中文网/ 问答频道 /正文

有一个函数,func,它接受两个字符串参数,第一个有效,但是根据itertools文档,第二个不是也可以吗?函数当前打印一个随机字符串,作为返回,但在第二秒什么也不会打印

func(*("dog", "cat")) //works

itertools.starmap(func, [("dog", "cat")]) //fails without error message, nothing gets printed to screen

也许是太晚了(或太早),我错过了一个明显的错误吗?在


Tags: 函数字符串文档message参数errorcatwithout
1条回答
网友
1楼 · 发布于 2024-05-12 18:05:20

itertools.starmap返回一个迭代器;要真正执行它,您需要迭代它,例如使用list

list(itertools.starmap(func, [("fall", "2007")]))
网友
2楼 · 发布于 2024-05-12 18:05:20

要在开始时获取结果列表(如果不需要延迟获取结果),请将迭代器调整为list(在Python3中):

>>> list(starmap(lambda x,y:x**y, [(1,2),(3,4)]))
[1, 81]
网友
3楼 · 发布于 2024-05-12 18:05:20

问题在于starmap()函数调用返回一个迭代器(即itertools.starmap对象),而不是值本身的列表。在

您的函数运行良好,但您应该通过迭代获得结果:

for result in itertools.starmap(func, [("fall", "2007")]):
    # print result here or do some other stuff

要在开始时获取结果列表(如果不需要延迟获取结果),请调整迭代器以列出:

^{pr2}$

相关问题 更多 >