你应该遇到过需要判断一个列表是否包含另一个列表的全部元素的场景吧 。这种需求在实际工作中非常常见,比如在数据筛选、列表匹配以及集合操作等 。下面勇哥给大家分享三个日常使用到的小技巧 。
文章插图
方法一:使用all函数和生成器表达式例如从一个大的数据列表中选取满足特定条件的子集 。勇哥举个例子:我们需要从一个商品列表中筛选出库存充足的商品:
def contAIns(list1, list2):return all(item in list1 for item in list2)# 筛选库存充足的商品product_list = [{'name': 'Apple', 'stock': 10}, {'name': 'Banana', 'stock': 5}, {'name': 'Orange', 'stock': 8}]required_products = ['Apple', 'Banana']if contains([product['name'] for product in product_list], required_products):print("有库存")else:print("有库存不足的商品")# 输出 :有库存
方法二:使用set函数和集合运算对两个集合进行操作,例如求并集、交集或差集,这种也是很实用且常用 。再举个栗子:判断用户的兴趣爱好是否与某个活动的标签相匹配:# 1. 内置函数def contains(list1, list2):return set(list2).issubset(set(list1))# 2. 操作符def contains2(list1, list2):return set(list2) <= set(list1)user_interests = ['篮球', '游泳', '登山', '音乐']event_tags = ['篮球', '足球', '音乐']if contains(user_interests, event_tags):print("完全匹配")else:print("不完全匹配")if contains2(user_interests, event_tags):print("完全匹配")else:print("不完全匹配")# 输出: 不完全匹配
方法三:嵌套循环有时候会遇到一些特殊的场景 , 比如:需要自定义复杂的条件判断逻辑来判断列表之间的关系,这时候用上面两种方法不太方便,我们就可以遇事不决先循环一波试试了 。最后一个栗子:判断两个任务列表的优先级是否一致:def list_contains(List1, List2):if len(List1) != len(List2):return Falsefor task1, task2 in zip(List1, List2):if task1['priority'] != task2['priority']:return Falsereturn Truetasks_1 = [{'name': 'Task 1', 'priority': 1}, {'name': 'Task 2', 'priority': 2}]tasks_2 = [{'name': 'Task 3', 'priority': 1}, {'name': 'Task 4', 'priority': 2}]if list_contains(tasks_1, tasks_2):print("两个任务列表的优先级一致")else:print("两个任务列表的优先级不一致")# 输出:优先级一致
以上就是勇哥分享的三种简单实用的处理数据的思路及示例代码,当然如果小伙伴们遇到嵌套比较深可能需要全比对的数据或者更复杂的数据要处理的时候,就可以自由的扩展方法或者另辟蹊径了 。【Python小技巧:判断一个列表是否包含另一个列表的全部元素】
推荐阅读
- Python编程:利用缓存加速你的应用程序
- Python大型Excel文件处理:快速导入、导出与批量处理
- 如何使用Python构建OTP验证系统?
- Docker优秀实践:掌握这七个技巧让你成为容器化大师
- 五小步快速集成使用sentinel限流
- Python构建高效安全的OTP验证系统!
- 手镯大小、形状与材质:和谐搭配的关键
- 衣服上的油渍怎么去除 衣服上的油渍怎么去除小窍门简单
- 杨幂又恋爱啦!小鲜肉为杨幂庆生关系亲密似恋人,数十张合照被曝
- 《长江七号》的“假小子”徐娇官宣回归周星驰公司,晒和星爷最新搞怪合照:弹指一挥间,我回来啦!