如何使用Python将一维列表转换成二维矩阵?
时间: 2024-09-22 07:05:21 浏览: 34
python实现两个一维列表合并成一个二维列表
在Python中,你可以通过嵌套循环或者使用内置函数`itertools.zip_longest`轻松地将一维列表转换为二维矩阵。这里有个简单的例子:
1. **使用嵌套循环**:
```python
def convert_to_matrix(lst):
rows = len(lst) // len(lst[0]) if len(lst) else 1
matrix = [[lst[i * rows + j] for j in range(rows)] for i in range(len(lst) // rows)]
return matrix
# 示例
one_dim_list = [1, 2, 3, 4, 5, 6]
two_dim_matrix = convert_to_matrix(one_dim_list)
print(two_dim_matrix) # 输出: [[1, 2, 3], [4, 5, 6]]
```
这个方法假设输入的一维列表元素可以均匀分成等行数的子列表。
2. **使用`itertools.zip_longest`** (如果元素长度不一定相等):
```python
from itertools import zip_longest
def convert_matrix_with_zip(lst):
rows = max(len(row) for row in ([None] * len(lst), *lst))
matrix = [[row[i] for row in zip_longest(*[[elm] * rows for elm in lst])] for i in range(rows)]
return matrix
one_dim_list = [1, 2, 3, 4, 5]
two_dim_matrix = convert_matrix_with_zip(one_dim_list)
print(two_dim_matrix) # 输出: [[1, 2, 3, 4], [5, None, None, None]]
```
这里会创建最长的行数作为矩阵大小,不足的部分填充`None`或其他默认值。
阅读全文