Python: 将二维数组转换为一维数组
将二维列表转换为一维列表
a = [[0, 0.6, 0.37500000000000006, 0.7500000000000001, 0.19999999999999996, -0.24999999999999994, 0.0, -0.24999999999999994, 0.0, -1.25, -0.3333333333333335, 0.6, -1.25, 0.0, 0.33333333333333326, 0.5, -0.6666666666666667], [0, 0.12499999999999997, -2.0000000000000004, 0.16666666666666663, -0.24999999999999994, 0.5, -3.0000000000000004, 0.19999999999999996, 0.0, 0.19999999999999996, -0.16666666666666682, 0.6, -3.4999999999999996, -0.5000000000000001, -0.24999999999999994, 0.0, -0.24999999999999994], [0, -1.8503717077085943e-16, 0.7500000000000001, -0.6666666666666667, 0.7, -0.12499999999999997, 0.29999999999999993, -4.0, -1.0, -3.0000000000000004, 0.625, -0.5000000000000001, 0.24999999999999994, -2.5, -0.16666666666666682, 0.0, 0.5, -1.4999999999999998], [0, -0.5000000000000001, 0.09999999999999998, -1.0, -0.5000000000000001, -0.3333333333333335, 0.5, -0.6666666666666667, 0.7500000000000001, 0.33333333333333326, 0.37500000000000006, -0.16666666666666682, 0.16666666666666663, 0.5, 0.19999999999999996, -0.5000000000000001, -1.4999999999999998, -1.0], [0, -0.5000000000000001, 0.12499999999999997, -0.24999999999999994, -0.3333333333333335, -0.5000000000000001, -0.5000000000000001, 0.6666666666666666, -0.24999999999999994, 0.0, -1.25, -2.5, 0.0, 0.19999999999999996, 0.6666666666666666], [0, 0.19999999999999996, 0.0, -3.4999999999999996, -0.3333333333333335, 0.7, 0.5, 0.16666666666666663, 0.4999999999999999, -0.5000000000000001, -0.16666666666666682, -0.16666666666666682, 0.09999999999999998, -1.4999999999999998, -3.0000000000000004, 0.29999999999999993, 0.0, -1.4999999999999998, 0.33333333333333326], [0, -1.4999999999999998, 0.0]]
a_flat = [item for sublist in a for item in sublist]
print(a_flat)
输出:
[0, 0.6, 0.375, 0.75, 0.2, -0.25, 0.0, -0.25, 0.0, -1.25, -0.3333333333333333, 0.6, -1.25, 0.0, 0.3333333333333333, 0.5, -0.6666666666666666, 0, 0.125, -2.0, 0.16666666666666666, -0.25, 0.5, -3.0, 0.2, 0.0, 0.2, -0.16666666666666666, 0.6, -3.5, -0.5, -0.25, 0.0, -0.25, 0, -1.8503717077085943e-16, 0.75, -0.6666666666666666, 0.7, -0.125, 0.3, -4.0, -1.0, -3.0, 0.625, -0.5, 0.25, -2.5, -0.16666666666666666, 0.0, 0.5, -1.5, 0, -0.5, 0.1, -1.0, -0.5, -0.3333333333333333, 0.5, -0.6666666666666666, 0.75, 0.3333333333333333, 0.375, -0.16666666666666666, 0.16666666666666666, 0.5, 0.2, -0.5, -1.5, -1.0, 0, -0.5, 0.125, -0.25, -0.3333333333333333, -0.5, 0.6666666666666666, -0.25, 0.0, -1.25, -2.5, 0.0, 0.2, 0.6666666666666666, 0, 0.2, 0.0, -3.5, -0.3333333333333333, 0.7, 0.5, 0.5, -0.5, -0.16666666666666666, -0.16666666666666666, 0.1, -1.5, -3.0, 0.3, 0.0, -1.5, 0.3333333333333333, 0, -1.5, 0.0]
代码解析:
这段代码使用了列表推导,将二维列表 a 中的所有元素提取出来,并组成一个新的列表 a_flat。
列表推导的语法:
[expression for item in iterable if condition]
expression: 要执行的表达式,用于处理每个元素。item: 迭代器中的每个元素。iterable: 可迭代对象,例如列表、元组、字符串等。condition: 可选的条件表达式,只有满足条件的元素才会被处理。
代码解释:
代码中,[item for sublist in a for item in sublist] 的意思是:
- 遍历
a中的每个子列表sublist。 - 对于每个子列表
sublist,再遍历sublist中的每个元素item。 - 将所有元素
item加入新的列表a_flat中。
总结:
使用列表推导可以简洁地将二维列表转换为一维列表。
注意:
- 该方法适用于所有可迭代对象,不仅限于列表。
- 列表推导是一种高效的列表生成方法,可以提高代码的可读性和效率。
原文地址: https://www.cveoy.top/t/topic/nryw 著作权归作者所有。请勿转载和采集!