Python 有人能解释一下,在下面的代码中,使用zip进行矩阵乘法是如何工作的吗?

Python 有人能解释一下,在下面的代码中,使用zip进行矩阵乘法是如何工作的吗?,python,matrix,list-comprehension,Python,Matrix,List Comprehension,下面是我想理解的代码。基本上,我想更好地理解zip是如何使用的,而列表理解语法则是为了让矩阵相乘而编写的。在编码面试时使用这种方法更好吗?它会通过所有测试用例吗?还是使用普通嵌套循环 # Program to multiply two matrices using list comprehension # take a 3x3 matrix A = [[12, 7, 3], [4, 5, 6], [7, 8, 9]] # take a 3x4 matrix B = [

下面是我想理解的代码。基本上,我想更好地理解
zip
是如何使用的,而列表理解语法则是为了让矩阵相乘而编写的。在编码面试时使用这种方法更好吗?它会通过所有测试用例吗?还是使用普通嵌套循环

# Program to multiply two matrices using list comprehension
  
# take a 3x3 matrix
A = [[12, 7, 3],
    [4, 5, 6],
    [7, 8, 9]]
  
# take a 3x4 matrix
B = [[5, 8, 1, 2],
    [6, 7, 3, 0],
    [4, 5, 9, 1]]
  
# result will be 3x4
result = [[sum(a * b for a, b in zip(A_row, B_col)) 
                        for B_col in zip(*B)]
                                for A_row in A]
  
for r in result:
    print(r) # list comprehension using zip is not working in jupyter notebook

关于和/或功能的哪部分文档不清楚?为了理解你问题中的代码,我建议你将列表理解转化为等价的嵌套
for
循环来构建列表。我特别想解释一下代码行
结果如何=[[sum(a*b代表a,b在zip中(a_行,b_列))代表b_列(*b)]代表a_列]
works以及我在jupyter notebook中使用的上述方法不起作用,并且给了我一个类型错误是的,您已经正确识别了包含使用
zip()函数的列表理解的行。它只在jupyter笔记本中工作吗?换言之,它在其他情况下会起作用吗?堆栈溢出不是一个为您完成研究、设计或编码工作的地方,也不是用来取代现有教程或文档的地方。如果您不了解矩阵乘法,本主题中的可能是一个很好的起点。