最全方法:Python 将一维列表转换成二维列表(list列表可看作数组)
•
2024-02-20
•
文章类别:
后端编程语言
•
阅读量:406
Python 将一维列表转换成二维列表,其实可能也就是你想要查找的“Python 一维数组转换成二维数“,因为在 Python 中内置的数据类型是 list 列表作为数组的实现,其操作和其他语言中的数组的操作类似。如果你要在 Python 中真正的使用数组类型,你需要安装 Python 第三方软件包。
本文中介绍的 Python 将一维列表转换成二维列表,可实现二维列表中的每个列表包含不同个数的元素。
Python 将一维列表转换成二维列表可分为如下的两种种情况:
- Python 二维列表中每列的元素数相同,即:每个子列表包含的元素的个数相同
- Python 二维列表中每列的元素数不同,即:每个子列表包含的元素的个数不同
Python二维列表中每列的元素数相同
Python 将一维列表转换成二维列表时,二维列表中每列的元素个数相同也分为两种情概况:
- 只知二维列表的每个子列表的列数
- 已知二维列表的行数和列数,此时一维列表的元素数最好是二维列表行数和列数的乘积(当然也可以不是)
只知二维列表的每个子列表的列数
使用该种方式能够处理完一维列表中的每一个元素。
示例:
list_1d = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
list_2d = []
cols = 5
row = 0
col = 0
for item in list_1d:
if col == 0:
list_2d.append([])
list_2d[row].append(item)
col += 1
elif col < cols:
list_2d[row].append(item)
col += 1
else:
row += 1
list_2d.append([])
list_2d[row].append(item)
col = 1
print(list_2d)
代码解释:
- 第一次
col
为零时,需要添加一个[]空列表,然后向空列表中添加当前元素,而且该语句只执行一次 - 执行
else
时,即col == cols
,这时已经时下一个子列表的第一个元素,因此要先执行row += 1
,然后再添加一个[]空列表,并附加当前元素。因为子列表的第一个元素已经附加,col
要赋值为1
,不能赋值为0
已知Python二维列表的行数和列数
已知Python二维列表的行数和列数,可以按照只知二维数组的列数来处理,也推荐使用:只知二维数组的列数来处理,因为这种情况能完全处理完一维数组的元素。
示例:
list_1d = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
list_2d = []
rows = 4
cols = 5
for row in range(rows):
try:
for col in range(cols):
if col == 0:
list_2d.append([])
list_2d[row].append(list_1d[row*cols+col])
except IndexError:
break
print(list_2d)
代码解释:
- 每次
col
为零时,需要添加一个[]空列表,它的作用是搭建二维列表的框架,然后向空列表中添加元素, append()
只能附加一个元素,不能附加一个列表元素
Python二维列表中每列的元素数不同
Python 将一维列表转换成二维列表时,如果二维元素的每列的元素数不同,那么需要给出每列的元素数,那么自然也能得知二维列表的行数,可以使用两种方式实现:
- 使用单循环实现Python一维列表转换成二维列表
- 使用双循环实现Python一维列表转换成二维列表
使用单循环转换
示例:
list_1d = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
list_2d = []
cols = [5, 4, 3, 4, 4]
row = 0
col = 0
for item in list_1d:
if col == 0:
list_2d.append([])
list_2d[row].append(item)
col += 1
elif col < cols[row]:
list_2d[row].append(item)
col += 1
else:
row += 1
if row == len(cols):
break
list_2d.append([])
list_2d[row].append(item)
col = 1
print(list_2d)
代码解释:
- 第一次
col
为零时,需要添加一个[]空列表,然后向空列表中添加当前元素,而且该语句只执行一次 - 执行
else
时,即col == cols
,这时已经时下一个子列表的第一个元素,因此要先执行row += 1
,然后再添加一个[]空列表,并附加当前元素。因为子元素的第一个元素已经附加,col
要赋值为1
,不能赋值为0
- break 与是一维列表中元素个数多时,中断循环
使用双循环转换
示例:
list_1d = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
list_2d = []
cols = [5, 4, 3, 4, 4]
rows = len(cols)
prev_rows_item = 0
for row in range(rows):
try:
for col in range(cols[row]):
if col == 0:
if row == 0:
pass
else:
prev_rows_item += cols[row-1]
list_2d.append([])
list_2d[row].append(list_1d[prev_rows_item+col])
except IndexError:
break
print(list_2d)
代码解释:
- 每次
col
为零时,需要添加一个[]空列表,它的作用是搭建二维列表的框架,然后向空列表中添加元素, append()
只能附加一个元素,不能附加一个列表元素
总结
本文中介绍了 Python 如何将一维列表转换成二维列表,可实现二维列表中的每个列表包含不同个数的元素。并介绍了 Python 将一维列表转换成二维列表的两种实现情况: Python 二维列表中每列的元素数相同,即:每个子列表包含的元素的个数相同; Python 二维列表中每列的元素数不同,即:每个子列表包含的元素的个数不同。
0 评论