Python一维列表转固定4列二维列表:补None且不重复元素
解决方案:将一维列表转为固定列数的二维矩阵(无重复填充)
问题说明
现有一维列表:
a = ['2', '3', '4', '7', '5']
需转换为固定4列的二维矩阵,元素不重复,不足部分用None填充,目标结果:
New_a = [['2', '3', '4', '7'], ['5', None, None, None]]
使用numpy的reshape会因维度不匹配失败,resize会重复填充元素,不符合需求。
实现代码
可以通过手动分组+补充空值的方式实现,无需依赖numpy:
a = ['2', '3', '4', '7', '5'] cols = 4 # 固定列数 new_a = [] for i in range(0, len(a), cols): # 截取当前行的元素 row = a[i:i+cols] # 补充None至指定列数 while len(row) < cols: row.append(None) new_a.append(row) print(new_a) # 输出:[['2', '3', '4', '7'], ['5', None, None, None]]
代码说明
- 按固定列数
cols循环截取原列表的切片,每次取cols个元素作为一行 - 若当前行元素数量不足
cols,则补充None直到满足列数要求 - 将处理后的每一行添加到新的二维列表中
也可以用更简洁的列表推导式写法:
a = ['2', '3', '4', '7', '5'] cols = 4 # 计算需要补充的None数量 pad_count = cols - len(a) % cols if len(a) % cols != 0 else 0 # 补充None后按列数分组 new_a = [(a + [None]*pad_count)[i:i+cols] for i in range(0, len(a)+pad_count, cols)]
内容的提问来源于stack exchange,提问作者jamal manssour
相关产品推荐
相关产品推荐

