Python如何访问提取嵌套列表元素 按列重组得到指定输出
嵌套列表按列重组实现
原代码的错误点:两层循环遍历到的j是子列表里的单个数值元素,并非可切片的序列,执行j[0:3]会直接报错,完全无法实现按列聚合的逻辑。
需求本质是对二维嵌套列表做矩阵转置,即把每一列的元素收拢为新的子列表,有两种常见实现方式:
- 内置函数快速实现:用
zip(*alist)可以直接按索引位置聚合所有可迭代对象的对应元素,因为zip默认返回元组,转成列表即可得到目标结构
运行输出:alist = [[0., 0., 0], [1 , 2, 3 ], [4, 5, 6 ],[7, 8, 9], [10, 11, 12], [13, 14, 15]] a = [list(col) for col in zip(*alist)] print(a)
输出里第一个元素为[[0.0, 1, 4, 7, 10, 13], [0.0, 2, 5, 8, 11, 14], [0.0, 3, 6, 9, 12, 15]]0.0是原列表第一行元素本身是浮点数导致的,和期望结果的值完全匹配,需要统一整数类型的话可以在转列表时加类型转换即可。 - 基础循环实现:如果要手写逻辑不依赖内置聚合函数,可以先按列数初始化对应数量的空列表,再逐行遍历把元素追加到对应索引的子列表中
alist = [[0., 0., 0], [1 , 2, 3 ], [4, 5, 6 ],[7, 8, 9], [10, 11, 12], [13, 14, 15]] col_num = len(alist[0]) a = [[] for _ in range(col_num)] for row in alist: for index, value in enumerate(row): a[index].append(value) print(a)
内容的提问来源于stack exchange,提问作者Tim gallerge
相关产品推荐
相关产品推荐

