我正在尝试创建一个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]]
答案 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]
应该可以正常工作。