如何在Python中断言列表A包含于列表B?
验证列表所有元素是否包含在另一个列表中的正确断言方式
场景1:仅需验证元素存在(不考虑出现次数)
直接使用all()函数配合生成器表达式,逐个检查list_a的元素是否都在list_b中:
list_a = [1, 2, 3] list_b = [1, 2, 3, 4, 5] assert all(item in list_b for item in list_a)
只要list_a中有任意一个元素不在list_b里,断言就会触发AssertionError。
场景2:需验证元素存在且数量足够
如果list_a包含重复元素,需要确保list_b中对应元素的数量不少于list_a,可以用collections.Counter:
from collections import Counter list_a = [1, 2, 2, 3] list_b = [1, 2, 3, 4, 5] # 简洁写法:直接比较Counter的大小 assert Counter(list_a) <= Counter(list_b)
Counter的<=操作符会自动检查所有元素的计数,只有当list_a中每个元素的出现次数都不超过list_b时,断言才会通过。
内容的提问来源于stack exchange,提问作者Geek Panda
相关产品推荐
相关产品推荐

