📅  最后修改于: 2023-12-03 15:38:38.224000             🧑  作者: Mango
在 Python 中,一维数组可以用列表(list)来表示,而二维数组可以用列表的列表(nested list)来表示。有时,我们需要把一维数组转换为二维数组或者把二维数组转换为一维数组。下面我们就来看看如何实现这个功能。
假设我们有一个包含 12 个元素的一维数组 arr
,现在我们要把这个数组转换为一个 3 行 4 列的二维数组。我们可以通过下面的代码实现:
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
rows = 3
cols = 4
# 使用列表推导式生成二维数组
matrix = [[arr[cols * i + j] for j in range(cols)] for i in range(rows)]
print(matrix)
输出结果为:
[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
代码说明:
arr
,其中包含了 12 个元素。rows
和 cols
,分别表示二维数组的行数和列数。rows
行 cols
列的二维数组 matrix
。列表推导式的内部实现是两个 for 循环,对于每个元素,它的值为 arr[cols * i + j]
,其中 i
和 j
分别表示该元素在二维数组中的行和列。接下来,我们来看看如何把一个二维数组转换为一维数组。假设我们有一个 3 行 4 列的二维数组 matrix
,现在我们要把它转换为一个一维数组。我们可以使用下面的代码实现:
matrix = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
# 使用列表推导式生成一维数组
arr = [matrix[i][j] for i in range(len(matrix)) for j in range(len(matrix[0]))]
print(arr)
输出结果为:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
代码说明:
matrix
,其中包含了 3 行 4 列共 12 个元素。arr
。列表推导式的内部实现也是两个 for 循环,对于每个元素,它的值为 matrix[i][j]
,其中 i
和 j
分别表示该元素在二维数组中的行和列。本文介绍了如何在 Python 中实现一维数组转换为二维数组以及二维数组转换为一维数组,对于处理数组数据有一定的帮助。但需要注意的是,以上代码都是基于数组元素在内存中的线性存储方式,所以非线性存储的情况需要使用其他方法来实现。