如何使用Python打印两个列表中的共有匹配字符串
Python 查找并打印两个列表共有匹配字符串的实现方法
Python 没有单独命名的专属内置函数直接完成这个需求,但可以通过内置数据结构的原生方法非常便捷地实现,以下是常用方案:
- 方案1:集合交集法(无顺序要求时最高效)
集合类型原生支持交集运算,可以直接取出两个可迭代对象的共有元素,适合不在乎输出顺序、只需要去重后的共有值的场景:
运行后会输出两个列表共有的list1 = ['Apples', 'Bananas', 'Oranges'] list2 = ['Oranges', 'Grapes', 'Strawberries', 'Apples'] # 计算两个列表的共有元素 common = set(list1) & set(list2) # 逐行打印匹配结果 for item in common: print(item)Apples和Oranges,注意集合是无序结构,输出的两个元素顺序不固定。 - 方案2:列表推导式法(保留顺序、适配重复元素场景)
如果你需要保留元素在原列表中的出现顺序,或者列表中存在重复元素、需要保留所有匹配的重复项,可以用列表推导式实现。如果列表长度较大,建议先把用来判断的列表转成集合,大幅提升成员判断的速度:
这个写法的输出顺序会和list1 = ['Apples', 'Bananas', 'Oranges'] list2 = ['Oranges', 'Grapes', 'Strawberries', 'Apples'] # 先转集合优化判断效率 check_set = set(list2) # 按list1的顺序提取所有匹配元素 common = [item for item in list1 if item in check_set] # 逐行打印 for item in common: print(item)list1中共有元素的出现顺序一致,即先输出Apples再输出Oranges。
补充说明:以上方案默认是字符串精确匹配,如果需要做大小写不敏感匹配、子串模糊匹配,只需要修改判断条件即可,比如大小写不敏感的判断可以写为
item.lower() in {x.lower() for x in list2}。
内容的提问来源于stack exchange,提问作者jivcodes
相关产品推荐
相关产品推荐

