标量乘法?

时间:2017-03-16 20:13:57

标签: 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]]

1 个答案:

答案 0 :(得分:3)

您的列表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]

和save作为新列表的第一个元素,然后进入第二个元素并执行类似的“错误”。

另一方面

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

应该可以正常工作。