用两种方法编写程序完成二维数组的转置
时间: 2024-05-15 22:16:25 浏览: 7
方法一:使用嵌套循环
```python
# 定义原始数组
arr = [[1,2,3],[4,5,6],[7,8,9]]
# 获取原始数组的行数和列数
rows = len(arr)
cols = len(arr[0])
# 创建一个新的数组,用于存储转置后的结果
transposed = [[0 for j in range(rows)] for i in range(cols)]
# 使用嵌套循环遍历原始数组,并将每个元素转置到新数组中对应的位置
for i in range(rows):
for j in range(cols):
transposed[j][i] = arr[i][j]
# 输出转置后的数组
for row in transposed:
print(row)
```
方法二:使用zip函数
```python
# 定义原始数组
arr = [[1,2,3],[4,5,6],[7,8,9]]
# 使用zip函数将原始数组进行转置,并将结果转换为列表
transposed = list(zip(*arr))
# 输出转置后的数组
for row in transposed:
print(row)
```
两种方法都可以完成二维数组的转置,但使用zip函数的方法更为简洁。
相关问题
用两种js方法编写程序完成二维数组的转置
方法一:利用循环嵌套实现
```javascript
function transpose(arr) {
var result = [];
for(var i = 0; i < arr[0].length; i++) {
result[i] = [];
for(var j = 0; j < arr.length; j++) {
result[i][j] = arr[j][i];
}
}
return result;
}
```
方法二:利用Array.prototype.reduce()方法实现
```javascript
function transpose(arr) {
return arr[0].map((_, i) => arr.reduce((res, arr) => [...res, arr[i]], []));
}
```
C中如何编写函数将给定二维数组转置
以下是一个将给定二维数组转置的C语言函数:
```c
void transpose(int arr[][3], int rows, int cols) {
int temp;
for (int i = 0; i < rows; i++) {
for (int j = i; j < cols; j++) {
temp = arr[i][j];
arr[i][j] = arr[j][i];
arr[j][i] = temp;
}
}
}
```
此函数的参数为一个二维数组和该数组的行数和列数。函数使用两个嵌套的for循环遍历数组,将每个元素与其对称位置的元素进行交换,从而实现转置。在循环中,只需交换上半部分或下半部分的元素即可,因为对称元素会被重复交换两次。