python - 标量乘法?

标签 python lambda

我正在尝试创建一个 scalar_multiplication lambda 函数,但我只能让我的第一个断言起作用。我认为我需要考虑多个抽象级别,但我陷入了困境。这是我到目前为止所拥有的

scalar_mult = lambda c, M: [x * c for x in M]

assert scalar_mult(1, [[1,2], [3,4]]) == [[1,2], [3,4]]
assert scalar_mult(2, [[1,2], [3,4]]) == [[2,4], [6,8]]

最佳答案

您的列表 M 有两个级别,因此您需要迭代两次。使用您当前的代码

scalar_mult(2, [[1,2], [3,4]])

将导致

[[1,2,1,2], [3,4,3,4]]

当您将第一个列表的每个元素乘以2,并在Python中将列表乘以整数时,只需复制它即可。所以你的代码确实如此

[1, 2]*2  # which equals to [1,2,1,2]

并将其保存为新列表的第一个元素,然后继续处理第二个元素并执行类似的“错误”。

另一方面

scalar_mult = lambda c, M: [[x * c for x in X] for X in M]

应该可以正常工作。

关于python - 标量乘法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42843941/

相关文章:

Python Turtle 窗口 - 设置(或获取)窗口边框的精确像素大小?

python - 列表方法扩展可以用在函数上吗? (Python 3)

python - 使用 Python 和 Gmail 作为提供者发送电子邮件的安全方法是什么?

python - 如何在 Windows 上通过 Anaconda 安装 OpenCV?

c++ - 嵌套的 lambda 语法和调用?

python - lambda 函数如何获得它的值?

c++ - cpp中 "[=]"是什么意思

python - 如何将 seaborn 轴添加到带有子图的 matplotlib 图?

amazon-web-services - 模板格式错误: YAML not well-formed

lambda - 为什么我不能在 kotlin 中使用 lambda 接口(interface)?