如何从三维嵌套列表提取指定列数据生成新列表?
解决方案:从三维嵌套列表提取指定元素生成新列表
这事儿在Python里实现起来很直接,咱们先看代码,再拆解逻辑:
首先定义你的原始三维列表:
original_list = [[['21832', '1524', '30', '133'], ['16142', '1233', '17', '113']], [['23296', '1570', '34', '138'], ['17243', '1277', '18', '118']], [['23296', '1570', '34', '138'], ['17243', '1278', '18', '118']], [['25919', '1658', '35', '141'], ['19081', '1344', '21', '124']]]
方法一:直观的列表推导式
这是最容易理解的方式,直接按层级提取元素:
# 提取每个外层元素中第一个子列表的第0位,转成整数 target_list1 = [int(outer_item[0][0]) for outer_item in original_list] # 提取每个外层元素中第一个子列表的第1位,转成整数 target_list2 = [int(outer_item[0][1]) for outer_item in original_list] # 提取每个外层元素中第一个子列表的第2位,转成整数 target_list3 = [int(outer_item[0][2]) for outer_item in original_list] # 验证结果 print(target_list1) # 输出: [21832, 23296, 23296, 25919] print(target_list2) # 输出: [1524, 1570, 1570, 1658] print(target_list3) # 输出: [30, 34, 34, 35]
逻辑拆解
你的原始列表结构是:
外层列表 → 每个元素是包含两个子列表的列表 → 第一个子列表里有4个字符串元素
我们遍历外层列表的每一项outer_item:
outer_item[0]:拿到当前外层元素里的第一个子列表(比如第一个外层元素的['21832', '1524', '30', '133'])- 再通过
[0]/[1]/[2]提取子列表里对应位置的元素,用int()把字符串转成整数(如果不需要转成数字,直接去掉int()即可)
方法二:更简洁的zip批量处理
如果想一次性生成三个列表,可以用zip()配合列表推导式,代码更紧凑:
# 先把每个外层元素需要的三个元素打包成元组,再用zip拆分 raw_tuples = [(int(outer_item[0][0]), int(outer_item[0][1]), int(outer_item[0][2])) for outer_item in original_list] target_list1, target_list2, target_list3 = map(list, zip(*raw_tuples))
这里zip(*raw_tuples)会把所有元组的第0位、第1位、第2位分别聚合,最后用map(list, ...)把元组转成列表(如果接受元组结果,可以省略这一步)
内容的提问来源于stack exchange,提问作者kakanaldo
相关产品推荐
相关产品推荐

