如何从三层嵌套列表生成两种特定格式的非扁平化列表
解决三层嵌套列表的两个处理需求
给定三层嵌套列表:
test_list = [ [['1']], [['2', '2']], [['3', '3'], ['4', '4'], ['5', '5'], ['6', '6']], [['7', '7'], ['8'], ['7'], ['1'], ['7', '7']], [['7', '7'], ['8'], ['7'], ['7', '7']], [['2', '2']]]
需求1:简化单元素外层列表,保留多元素嵌套结构
实现思路
遍历原列表的每个外层元素:如果该元素仅包含一个子列表,则直接提取这个子列表;如果包含多个子列表,则保留原嵌套结构。
代码实现
test_list = [ [['1']], [['2', '2']], [['3', '3'], ['4', '4'], ['5', '5'], ['6', '6']], [['7', '7'], ['8'], ['7'], ['1'], ['7', '7']], [['7', '7'], ['8'], ['7'], ['7', '7']], [['2', '2']]] # 处理需求1 new_list1 = [item[0] if len(item) == 1 else item for item in test_list] # 打印结果 for elem in new_list1: print(elem)
输出结果
['1'] ['2', '2'] [['3', '3'], ['4', '4'], ['5', '5'], ['6', '6']] [['7', '7'], ['8'], ['7'], ['1'], ['7', '7']] [['7', '7'], ['8'], ['7'], ['7', '7']] ['2', '2']
需求2:按规则去重生成新列表
实现思路
对原列表的每个外层元素做如下处理:
- 遍历该元素下的每个子列表,对每个子列表内部去重(保留元素顺序)
- 提取每个去重后子列表的唯一元素,按原顺序组成一个新列表
- 将所有处理后的新列表汇总成最终结果
代码实现
test_list = [ [['1']], [['2', '2']], [['3', '3'], ['4', '4'], ['5', '5'], ['6', '6']], [['7', '7'], ['8'], ['7'], ['1'], ['7', '7']], [['7', '7'], ['8'], ['7'], ['7', '7']], [['2', '2']]] # 处理需求2 new_list2 = [] for item in test_list: processed = [] for sublist in item: # 子列表去重,保留顺序 unique_val = list(dict.fromkeys(sublist))[0] processed.append(unique_val) new_list2.append(processed) # 打印结果 for elem in new_list2: print(elem)
输出结果
['1'] ['2'] ['3', '4', '5', '6'] ['7', '8', '7', '1', '7'] ['7', '8', '7', '7'] ['2']
内容的提问来源于stack exchange,提问作者ola
相关产品推荐
相关产品推荐

