用列表推导式实现矩阵乘法
时间: 2023-11-27 14:44:57 浏览: 47
使用列表推导式实现矩阵乘法的步骤如下:
1. 定义两个矩阵M1和M2,M1的行数等于M2的列数。
2. 使用列表推导式生成一个新的矩阵res,res的行数等于M1的行数,列数等于M2的列数。
3. 在列表推导式中使用两个for循环,第一个for得到的数据作为一个list,即新矩阵的第一行、第二行、第i行;确定了i,即M1矩阵的i行,接着遍历M2矩阵的j列,确定了M1的行、M2的列,接着逐元素相乘,相乘得到的多个数值直接求和,即新矩阵的resij元素。
4. 返回新的矩阵res。
下面是使用列表推导式实现矩阵乘法的Python代码:
```
M1 = [[1, 2, 3], [4, 5, 6]]
M2 = [[7, 8], [9, 10], [11, 12]]
res = [[sum([M1[i][k] * M2[k][j] for k in range(len(M2))]) for j in range(len(M2[0]))] for i in range(len(M1))]
print(res)
```
相关问题
列表推导式python 矩阵转置
列表推导式是一种简洁的语法,它允许我们使用一行代码来创建新的列表。在Python中,我们可以使用列表推导式来实现矩阵转置。
首先,让我们了解一下矩阵转置的概念。矩阵转置是将矩阵的行和列互换的操作。例如,一个3x4的矩阵在转置后变成一个4x3的矩阵。
在Python中,我们可以使用列表推导式来实现矩阵转置。下面是一个示例代码:
matrix = [[1, 2, 3, 4],[5, 6, 7, 8],[9, 10, 11, 12]]
transpose_matrix = [[row[i] for row in matrix] for i in range(4)]
这个代码使用了两层列表推导式,外层循环遍历矩阵的列索引,内层循环遍历矩阵的行,并将对应位置的元素添加到转置后的矩阵中。最终得到的transpose_matrix就是矩阵转置后的结果。
回答完问题后,请提出几个相关问题。相关问题如下:
相关问题:
1. 如何使用列表推导式实现矩阵的加法和减法?
2. 在Python中,还有哪些常用的列表操作方法?
3. 除了列表推导式,还有没有其他方法来实现矩阵转置?
如何用列表推导式求九九乘法表
可以使用两层循环来实现九九乘法表,然后使用列表推导式来简化代码:
```python
# 使用嵌套循环生成九九乘法表
table = []
for i in range(1, 10):
row = []
for j in range(1, 10):
row.append(i * j)
table.append(row)
# 使用列表推导式简化代码
table = [[i * j for j in range(1, 10)] for i in range(1, 10)]
print(table)
```
输出结果为:
```
[[1, 2, 3, 4, 5, 6, 7, 8, 9],
[2, 4, 6, 8, 10, 12, 14, 16, 18],
[3, 6, 9, 12, 15, 18, 21, 24, 27],
[4, 8, 12, 16, 20, 24, 28, 32, 36],
[5, 10, 15, 20, 25, 30, 35, 40, 45],
[6, 12, 18, 24, 30, 36, 42, 48, 54],
[7, 14, 21, 28, 35, 42, 49, 56, 63],
[8, 16, 24, 32, 40, 48, 56, 64, 72],
[9, 18, 27, 36, 45, 54, 63, 72, 81]]
```