博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python每日一练0030
阅读量:6495 次
发布时间:2019-06-24

本文共 1089 字,大约阅读时间需要 3 分钟。

问题

如何判断一个list包含另一个list

例如我有两个list

List1 = ['a','c','c']List2 = ['x','b','a','x','c','y','c']

如何判断list2包含了list1

解决方案

如果元素的数量不重要,也就是说只判断list1里的所有种类在list2都有出现过,那么使用set()即可

>>> List1 = ['a','c','c']>>> List2 = ['x','b','a','x','c','y','c']>>> set(List1) < set(List2)True

如果元素的数量也需要考虑,即list1里的元素必须全部在list2里出现并且不重复,那么可以考虑使用Counter

from collections import Counterdef counterSubset(list1, list2):    counter1 = Counter(list1)    counter2 = Counter(list2)    for k, v in counter1.items():        if v > counter2[k]:            return False    return TrueList1 = ['a', 'c', 'c']List2 = ['x', 'b', 'a', 'x', 'c', 'y', 'c']print(counterSubset(List1, List2))

我们还可以使用all()来简化代码

>>> from collections import Counter>>> List1 = ['a', 'c', 'c']>>> List2 = ['x', 'b', 'a', 'x', 'c', 'y', 'c']>>> counter1 = Counter(List1)>>> counter2 = Counter(List2)>>> print(all(v <= counter2[k] for k, v in counter1.items()))True

讨论

对于set类型,Python提供了一些操作符来描述两个集合的关系(包含、真包含等等)。而<操作符描述的是,一个集合是否是另一个集合的真子集

all()接受一个可迭代对象作为参数,并且判断这个可迭代对象的所有元素是否全部为True。相应的,还有any() 函数,用来判断是否存在一个True

来源

Stack Overflow

关注

欢迎关注我的微信公众号:python每日一练

转载地址:http://rauyo.baihongyu.com/

你可能感兴趣的文章
Android重构杂感
查看>>
如何分析性能测试需求
查看>>
PS常识及技巧
查看>>
WPF 自定义ProgressBar滚动条样式
查看>>
写一个百度url收录检测的web_php小工具
查看>>
block,inline和inline-block概念和区别
查看>>
开源源码搜索+读书学习
查看>>
OpenCV Face Detection
查看>>
0505.Net基础班第二十二天(委托、XML和播放器项目)
查看>>
WEB新手之sql注入
查看>>
if、for、while的详解及实例(一)
查看>>
守护进程vs 守护线程
查看>>
mysql数据库的理解
查看>>
UIWebView
查看>>
asp.net mvc中自行搭建实现工厂模式的spring.net+三层架构(更新)
查看>>
在文本元素中加上图标
查看>>
C++官方文档-常量成员函数
查看>>
BFC块级格式
查看>>
为什么要使用数据库连接池?以及用法(DBUtils)
查看>>
装饰器 未完待续。。。
查看>>