Nik*_*hil 3 python lambda python-3.6
我是Python新手并练习基础知识.我使用lambda表达式来获取两个参数并对它们执行方形运算(例如:) var ** 2.这两个论点来自于zip(list1, list2).我正在TypeError为此而努力.我试着寻找解决方案,但没有得到任何解决方案.我甚至尝试在括号中编写lambda参数(例如lambda (v1,v2)::)但是扔了SyntaxError.
下面是python代码:
list1 = [1,2,3,4]
list2 = [5,6,7,8]
print ( list(map(lambda v1,v2: (v1**2, v2**2), list(zip(list1, list2)))) )
Run Code Online (Sandbox Code Playgroud)
错误:
TypeError Traceback (most recent call last)
<ipython-input-241-e93d37efc752> in <module>()
1 list1 = [1,2,3,4]
2 list2 = [5,6,7,8]
----> 3 print ( list(map(lambda v1,v2: (v1**2, v2**2), list(zip(list1, list2)))) )
TypeError: <lambda>() missing 1 required positional argument: 'v2'
Run Code Online (Sandbox Code Playgroud)
你给一个列表作为参数map,因此一次map调用你lambda的列表中的一个元素 - 这是一个参数,即使它是一个元组.你可能想要的是:
print ( list(map(lambda v: (v[0]**2, v[1]**2), zip(list1, list2))) )
Run Code Online (Sandbox Code Playgroud)
以便列表中的项目作为唯一参数传递给lambda.如果您坚持使用双参数lambda,请将zip您的列表直接丢弃并map作为单独的参数传递:
print ( list(map(lambda v1,v2: (v1**2, v2**2), list1, list2)) )
Run Code Online (Sandbox Code Playgroud)