我正在尝试创建一个 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/