当前位置:首页 > 科技  > 软件

Python小技巧:判断一个列表是否包含另一个列表的全部元素

来源: 责编: 时间:2023-09-20 21:55:07 422观看
导读你应该遇到过需要判断一个列表是否包含另一个列表的全部元素的场景吧。这种需求在实际工作中非常常见,比如在数据筛选、列表匹配以及集合操作等。下面勇哥给大家分享三个日常使用到的小技巧。方法一:使用all函数和生成

你应该遇到过需要判断一个列表是否包含另一个列表的全部元素的场景吧。这种需求在实际工作中非常常见,比如在数据筛选、列表匹配以及集合操作等。下面勇哥给大家分享三个日常使用到的小技巧。G0I28资讯网——每日最新资讯28at.com

G0I28资讯网——每日最新资讯28at.com

方法一:使用all函数和生成器表达式

例如从一个大的数据列表中选取满足特定条件的子集。勇哥举个例子:我们需要从一个商品列表中筛选出库存充足的商品:G0I28资讯网——每日最新资讯28at.com

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函数和集合运算

对两个集合进行操作,例如求并集、交集或差集,这种也是很实用且常用。再举个栗子:判断用户的兴趣爱好是否与某个活动的标签相匹配:G0I28资讯网——每日最新资讯28at.com

# 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("不完全匹配")# 输出: 不完全匹配

方法三:嵌套循环

有时候会遇到一些特殊的场景,比如:需要自定义复杂的条件判断逻辑来判断列表之间的关系,这时候用上面两种方法不太方便,我们就可以遇事不决先循环一波试试了。最后一个栗子:判断两个任务列表的优先级是否一致:G0I28资讯网——每日最新资讯28at.com

def list_contains(List1, List2):    if len(List1) != len(List2):        return False    for task1, task2 in zip(List1, List2):        if task1['priority'] != task2['priority']:            return False    return 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("两个任务列表的优先级不一致")# 输出:优先级一致

以上就是勇哥分享的三种简单实用的处理数据的思路及示例代码,当然如果小伙伴们遇到嵌套比较深可能需要全比对的数据或者更复杂的数据要处理的时候,就可以自由的扩展方法或者另辟蹊径了。G0I28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-10590-0.htmlPython小技巧:判断一个列表是否包含另一个列表的全部元素

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 极速Python编程:利用缓存加速你的应用程序

下一篇: C++ 里 ++i 是原子操作吗?

标签:
  • 热门焦点
  • 直屏旗舰来了 iQOO 12和K70 Pro同台竞技

    旗舰机基本上使用的都是双曲面屏幕,这就让很多喜欢直屏的爱好者在苦等一款直屏旗舰,这次,你们等到了。据博主数码闲聊站带来的最新爆料称,Redmi下代旗舰K70 Pro和iQOO 12两款手
  • 把LangChain跑起来的三个方法

    使用LangChain开发LLM应用时,需要机器进行GLM部署,好多同学第一步就被劝退了,那么如何绕过这个步骤先学习LLM模型的应用,对Langchain进行快速上手?本片讲解3个把LangChain跑起来
  • 学习JavaScript的10个理由...

    作者 | Simplilearn编译 | 王瑞平当你决心学习一门语言的时候,很难选择到底应该学习哪一门,常用的语言有Python、Java、JavaScript、C/CPP、PHP、Swift、C#、Ruby、Objective-
  • 冯提莫签约抖音公会 前“斗鱼一姐”消失在直播间

    来源:直播观察提起&ldquo;冯提莫&rdquo;这个名字,很多网友或许听过,但应该不记得她是哪位主播了。其实,作为曾经的&ldquo;斗鱼一姐&rdquo;,冯提莫在游戏直播的年代影响力不输于现
  • 8月见!小米MIX Fold 3获得3C认证:支持67W快充

    这段时间以来,包括三星、一加、荣耀等等有不少品牌旗下的最新折叠屏旗舰都得到了不少爆料,而小米新一代折叠屏旗舰——小米MIX Fold 3此前也屡屡被传
  • 华为HarmonyOS 4.0将于8月4日发布 或搭载AI大模型技术

    华为宣布HarmonyOS4.0将于8月4日正式发布。此前,华为已经针对开发者公布了HarmonyOS4.0,以便于开发者提前进行适配,也因此被曝光出了一些新系统的特性
  • 2纳米决战2025

    集微网报道 从三强争霸到四雄逐鹿,2nm的厮杀声已然隐约传来。无论是老牌劲旅台积电、三星,还是誓言重回先进制程领先地位的英特尔,甚至初成立不久的新
  • AMD的AI芯片转单给三星可能性不大 与台积电已合作至2nm制程

    据 DIGITIMES 消息,英伟达 AI GPU 出货逐季飙升,接下来 AMD MI 300 系列将在第 4 季底量产。而半导体业内人士表示,近日传出 AMD 的 AI 芯片将转单给
  • iQOO Neo8系列新品发布会

    旗舰双芯 更强更Pro
Top