如何筛选列表的列表中首元素匹配指定列表的子列表至新列表?
解决方案:筛选首元素匹配的子列表
我们需要从嵌套列表list2中筛选出那些**首元素存在于list1**的子列表,组成新列表newlist。示例场景如下:
list1 = [2,4,7,10] list2 = [[2,5],[3,7],[1,6],[10,3]] # 期望输出 newlist = [[2,5],[10,3]]
方法1:列表推导式(简洁推荐)
这是Python中最直观高效的写法,直接遍历list2并判断子列表首元素是否在list1内:
list1 = [2,4,7,10] list2 = [[2,5],[3,7],[1,6],[10,3]] newlist = [sublist for sublist in list2 if sublist[0] in list1] print(newlist) # 输出: [[2,5],[10,3]]
方法2:集合优化查询效率(适合大数据量)
如果list1包含大量元素,将其转换为集合可以把元素存在性检查的时间复杂度从O(n)降到O(1),大幅提升速度:
list1 = [2,4,7,10] list2 = [[2,5],[3,7],[1,6],[10,3]] set1 = set(list1) newlist = [sublist for sublist in list2 if sublist[0] in set1] print(newlist) # 输出: [[2,5],[10,3]]
方法3:普通循环实现(新手友好)
如果觉得推导式不够直观,也可以用基础的循环逻辑逐个判断并添加:
list1 = [2,4,7,10] list2 = [[2,5],[3,7],[1,6],[10,3]] newlist = [] for sublist in list2: if sublist[0] in list1: newlist.append(sublist) print(newlist) # 输出: [[2,5],[10,3]]
内容的提问来源于stack exchange,提问作者nsp077
相关产品推荐
相关产品推荐

