Python 中lambda和zip组合使用报错

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 中lambda和zip组合使用报错相关的知识,希望对你有一定的参考价值。

input_vec=[1,1]
weights=[0.0,0.0]
print(list(map(lambda x,w: x * w,zip(input_vec, weights))

报错信息如下:
TypeError: <lambda>() missing 1 required positional argument: 'w'

我知道zip(input_vec, weights)的值为 [(1,0.0),(1,0.0)],
但不知为何会提示参数个数不对,无法得出预期的结果,求各位朋友帮忙解惑。谢谢
我的Python版本为3.6.1。
第三行: print(list(map(lambda x,w: x * w,zip(input_vec, weights)) 后面再加2个")",

我是网上copy别个感知器代码,我是py3.6也出现了这个问题。PY2和py3在map和zip的地方有区别,py3的结果是迭代器,所以需要自己手动将结果转化为列表。因此只是光改代码提示错误的地方还不够,出现map和zip的地方都需要修改。更改主要两处代码:1.self.activator(reduce(lambda a,b: a + b,list(map(lambda x: x[0] * x[1], list(zip(input_vec, self.weights)))))+self.bias) 2:
def _update_weights(self, input_vec, output, label, rate):
delta = label - output
self.weights = list(map(
lambda x: x[1] + rate * delta * x[0],
list(zip(input_vec, self.weights))))
# 更新bias
self.bias += rate * delta
参考技术A

直接用列表解析会好一点

wenjie@digi007:~/work/multiDB$ python3.6
Python 3.6.1 (default, Mar 22 2017, 06:17:05) 
[GCC 6.3.0 20170321] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> input_vec=[1,1]
>>> weights=[0.0,0.0]
>>> L = [i*j for i,j in zip(input_vec, weights)]
>>> print(L)
[0.0, 0.0]
>>> print(list(map(lambda x: x[0]*x[1], zip(input_vec, weights))))
[0.0, 0.0]

本回答被提问者和网友采纳
参考技术B lambda表达式以元组作为参数,在python2和python3中写法是有区别的:
# python2
lambda (x, w) : x * w
#python3
lambda x_w : x_w[0] * x_w[1]
不知道帮到你了没
参考技术C #去掉zip
input_vec=[1,1]
weights=[0.0,0.0]
print(list(map(lambda x,w: x * w,input_vec, weights)))

参考技术D return self.activator(reduce(lambda a,b: a+b,list(map(lambda x: x[0]*x[1], zip(input_vec, self.weights))),0.0)+self.bias)

如何在 AWS Lambda 中使用 Python 自定义包

【中文标题】如何在 AWS Lambda 中使用 Python 自定义包【英文标题】:How to work with Python custom packages in AWS Lambda 【发布时间】:2021-01-17 12:41:43 【问题描述】:

我的 app.py 函数使用 pip 库(如 SQLAlchemy 等)...我将其部署到 AWS Lambda,因此我将 app.py 和所有其他依赖项打包到一个 zip 中。

    有没有更好的方法来解决这个问题? (如果 pip 库过时了怎么办) 我有一个要在许多程序中使用的自定义代码。如何创建自己的模块并将其与 pip 库一起打包?

【问题讨论】:

这应该会有所帮助:towardsdatascience.com/… 【参考方案1】:

是的,我将为您的每个问题提供一些替代方案:

    您可以使用 *framework (chalice/serverless) 自动为您处理打包。每次部署都会获取最新版本(根据您的 requirements.txt)然后为您打包。我建议你坚持使用框架。

    Lambda Layer 正是您所需要的 - 多个 lambda 将能够运行您的模块而无需开销(简单来说)。有很多参考资料解释了如何创建一个层以及关于 python 打包(你是必须评估是否需要将其上传到 pypi 的人)

在这两种情况下,serverless 都会对您有很大帮助!

【讨论】:

【参考方案2】:

关于 1 - AWS SAM 将计算出您的 requirements.txt 并将所需的内容与您的代码捆绑在一起。这适用于小型项目,但对于较大的项目,我建议采用与库代码相同的方式 - 将所有部门放在单独的层中。可以用pip install -U --target dirname安装,然后打包成一个层。

【讨论】:

以上是关于Python 中lambda和zip组合使用报错的主要内容,如果未能解决你的问题,请参考以下文章

Python列表操作:将前任和后继组合到元组中

lambda map() filter() zip()练习

python zip,lambda,map函数

在 terraform 中将 2 个 python 文件添加到 lambda_zip [重复]

Python (zip, lambda, map, shallow copy, deepcopy)

Python常用内置函数整理(lambda,reduce,zip,filter,map)