Python中如何将两个各含2000元素的一维List合并为二维数组?
解决Python中两个一维列表合并为二维数组的问题
嘿,我懂你的需求!你之前用A + B的方式确实达不到预期,因为它只是把两个列表直接拼接成一个包含4000个元素的一维列表,而不是按对应位置组合成2000行2列的二维结构。下面给你几种简单的实现方法:
方法一:使用Python内置的zip()函数
这是最直观的原生Python解法,zip()会自动把两个列表中对应位置的元素配对:
# 得到由元组组成的二维列表 combined = list(zip(A, B)) # 如果需要每个子元素是列表而不是元组,用列表推导式 combined = [[a, b] for a, b in zip(A, B)]
举个小例子验证效果:
A = ["Apple", "Ant", "Avocado"] B = ["Banana", "Bear", "Brinjal"] # 元组版本 print(list(zip(A, B))) # 输出: [('Apple', 'Banana'), ('Ant', 'Bear'), ('Avocado', 'Brinjal')] # 列表版本 print([[a, b] for a, b in zip(A, B)]) # 输出: [['Apple', 'Banana'], ['Ant', 'Bear'], ['Avocado', 'Brinjal']]
方法二:使用NumPy库(如果需要NumPy数组)
如果你需要的是NumPy格式的二维数组,可以用column_stack()或者转置vstack()的结果:
import numpy as np # 方法1:直接按列堆叠 combined_array = np.column_stack((A, B)) # 方法2:先按行堆叠再转置 combined_array = np.vstack((A, B)).T
执行后得到的combined_array就是2000行×2列的NumPy数组,完全符合你的需求。
注意:因为你提到两个列表都正好有2000个元素,所以不用担心
zip()或NumPy方法的长度匹配问题;如果列表长度不一致,zip()会以较短的列表为准截断,NumPy则会报错(除非用特殊处理)。
内容的提问来源于stack exchange,提问作者Malay Ruparel
相关产品推荐
相关产品推荐

