【发布时间】:2019-01-27 04:57:54
【问题描述】:
map function 在 Python 3 中的返回值是一个 Iterator。
为什么reduce function 在需要Iterable 时可以使用map 结果?
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from functools import reduce
def fn(x, y):
return x * 10 + y
def char2num(s):
digits = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}
return digits[s]
reduce(fn, map(char2num, '13579'))
【问题讨论】:
-
您可以将
map的返回值传递给reduce,因为迭代器是可迭代的。 Iterable 只是意味着“你可以在上面调用iter”。如果您在迭代器上调用iter,您将再次获得相同的迭代器。请包含您的示例代码作为文本,而不是作为图像。查看文本并与之交互要容易得多(例如,我可以将其复制并粘贴到我自己的解释器中)。 -
您可能对这个关于迭代器和可迭代对象之间区别的高度投票问题的答案感兴趣:stackoverflow.com/questions/9884132/… 我个人更喜欢我对这个更糟糕且现已关闭的问题的回答(但当然我' m 有偏差):stackoverflow.com/questions/40323783/…
标签: python python-3.x iterator