【发布时间】:2021-07-29 07:12:46
【问题描述】:
在执行这段代码时,我的理解出现了这种困惑或差距。我尝试了几种方法来解决这个问题,但我无法这样做。解决这个问题的正确方法是什么。
find_max = map(lambda a, b, c: a if a > b and a > c
else (b if b > a and b > c else c), (2, 3, 4))
print(list(find_max))
我收到以下错误
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: <lambda>() missing 2 required positional arguments: 'b' and 'c'
我调整了上面的代码
find_max=map(lambda a:a[0] if a[0]>a[1] and a[0]>a[2]
else (a[1] if a[1]>a[0] and a[1]>a[2] else a[2]),(2,3,4))
print(list(find_max))
我收到以下错误
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "<input>", line 1, in <lambda>
TypeError: 'int' object is not subscriptable
然后我进一步调整
find_max=map(lambda *a:a[0] if a[0]>a[1] and a[0]>a[2]
else (a[1] if a[1]>a[0] and a[1]>a[2] else a[2]),(2,3,4))
print(list(find_max))
``
I got the below error
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "<input>", line 1, in <lambda>
IndexError: tuple index out of range
【问题讨论】:
-
你能显示预期的输出,你的元组/字典/列表
-
map接受一个可调用对象,该可调用对象将提供一个单个参数。 -
find_max似乎想在可迭代对象中找到最大值。这根本不是map的用例。 Map 接受一个可迭代对象并将一个函数应用于每个元素,即它将函数映射到 iterable 的元素上。迭代器本身将始终具有与原始迭代器一样多的元素。你根本不想在这里使用map。 -
请注意,您实际上根本没有解释您要完成的工作,让我们猜测,实际上不应该是这样,您应该始终提供完整的问题陈述。
标签: python python-3.x dictionary lambda