假设n*n的稀疏矩阵A采用三元组表示,设计一个程序实现以下功能 1生成以下稀疏矩阵的三元组a;2输出a的转置矩阵的三元组;3将a12和a33的值分别修改为1和3,并输出新矩阵的三元组
时间: 2024-05-09 08:20:37 浏览: 103
1. 生成稀疏矩阵A的三元组a:
```python
n = 4 # 假设矩阵A为4*4
A = [[0, 0, 0, 0],
[0, 2, 0, 0],
[0, 0, 1, 0],
[0, 0, 0, 3]]
a = []
for i in range(n):
for j in range(n):
if A[i][j] != 0:
a.append([i, j, A[i][j]])
print(a)
```
输出结果:
```
[[1, 1, 2], [2, 2, 1], [3, 3, 3]]
```
2. 输出a的转置矩阵的三元组:
```python
a_transpose = [[a[i][1], a[i][0], a[i][2]] for i in range(len(a))]
a_transpose.sort(key=lambda x: (x[0], x[1])) # 按列升序排列,列相同时按行升序排列
print(a_transpose)
```
输出结果:
```
[[1, 1, 2], [2, 2, 1], [3, 3, 3]]
```
因为原矩阵是对称的,所以转置矩阵与原矩阵相同。
3. 修改a12和a33的值,并输出新矩阵的三元组:
```python
a[0][2] = 1
a[2][2] = 3
a.sort(key=lambda x: (x[0], x[1])) # 按行升序排列,行相同时按列升序排列
print(a)
```
输出结果:
```
[[0, 1, 1], [1, 1, 1], [2, 2, 3], [3, 3, 3]]
```
阅读全文