如何移除Python输出中的<function <lambda> at 0x0000021B33C63E20>内容?
问题解决
你的代码中a = lambda x, y: (x * y), m1, m2实际上创建了一个包含三个元素的元组:匿名函数对象、m1、m2。执行print(*list(a))时会把这三个元素全部输出,所以会出现<function ...>这部分内容。
要移除这部分,有两种简单方式:
方式一:只输出元组中的后两个元素
修改打印语句,截取元组的第2到末尾元素:
m1 = [[1, 0, 0], [0, 1, 0], [0, 0, 1]] m2 = [[0, 1, 0], [20, 0, -1], [-1, -2, 0]] m3 = [[0, 1, 0], [20, 0, -1], [-1, -2, 0]] a = lambda x, y: (x * y), m1, m2 print(*list(a)[1:])
输出结果:
[[1, 0, 0], [0, 1, 0], [0, 0, 1]] [[0, 1, 0], [20, 0, -1], [-1, -2, 0]]
方式二:调整a的定义,不包含匿名函数
如果你的代码不需要保留这个未调用的匿名函数,直接将m1和m2存入元组:
m1 = [[1, 0, 0], [0, 1, 0], [0, 0, 1]] m2 = [[0, 1, 0], [20, 0, -1], [-1, -2, 0]] m3 = [[0, 1, 0], [20, 0, -1], [-1, -2, 0]] a = (m1, m2) print(*list(a))
输出结果和方式一一致。
另外注意:你定义的lambda中的x * y对列表来说是重复操作(比如[1,2]*3得到[1,2,1,2,1,2]),如果实际需要矩阵乘法,需要手动实现或使用numpy库:
import numpy as np m1 = np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]]) m2 = np.array([[0, 1, 0], [20, 0, -1], [-1, -2, 0]]) result = m1 @ m2 # 矩阵乘法运算符 print(result)
输出结果:
[[ 0 1 0]
[20 0 -1]
[-1 -2 0]]
内容的提问来源于stack exchange,提问作者Adi Amadeo
相关产品推荐
相关产品推荐

