文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-11-30 07:32

关注

方法一:使用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 False

    for task1, task2 in zip(List1, List2):
        if task1['priority'] != task2['priority']:
            return False

    return True

tasks_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("两个任务列表的优先级不一致")

# 输出:优先级一致

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

来源:测试玩家勇哥内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯