提取二维列表(2D List)各子列表中的重复元素
筛选二维列表中含重复元素的子列表
给定一个二维列表,我们需要从中提取出所有包含重复元素的子列表。以下是具体实现方案:
示例输入
Df = [[2,3,5,20],[5,10,20,10],[4,13,15,15,17,34,17],[33,34,15,21]]
期望输出
Result = [[5,10,10,20],[4,13,15,15,17,17,34]]
实现代码
方案1:筛选并排序(匹配示例输出)
如果需要将子列表中的重复元素相邻排列(如示例结果所示),可以先筛选再排序:
# 筛选含重复元素的子列表,同时排序让重复元素相邻 result = [sorted(sublist) for sublist in Df if len(sublist) != len(set(sublist))] print(result)
运行后输出与期望结果完全一致。
方案2:仅保留原顺序筛选
如果不需要排序,只想保留子列表原有顺序,直接筛选即可:
# 仅筛选含重复元素的子列表,保留原顺序 result = [sublist for sublist in Df if len(sublist) != len(set(sublist))] print(result)
输出结果为:[[5, 10, 20, 10], [4, 13, 15, 15, 17, 34, 17]]
逻辑说明
- 判断子列表是否含重复元素:利用集合的去重特性,若子列表长度与对应集合长度不一致,说明存在重复元素。
- 排序处理:
sorted()函数会将子列表元素按升序排列,自然让重复元素聚集在一起,匹配示例的输出格式。
内容的提问来源于stack exchange,提问作者user12269799
相关产品推荐
相关产品推荐

