栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python 双指针列表对比 列表对比

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python 双指针列表对比 列表对比

# -*- coding = utf-8 -*-
# @Time : 2022/6/27 17:20
# @Author : Suage
# @File : my_list_comparator.py

# 对比函数
def list_comparator(lis1: list, lis2: list):
    """
    对比两个列表, 并返回差异
    :param lis1: 列表1
    :param lis2: 列表2
    :return: dict Keys:
'equal(bool)':两个列表是否相同
'l1_lacks(list)':列表2中有但列表1中没有
'l2_lacks(list)':列表1中有但列表2中没有 """ _l1 = list(set(lis1)) _l2 = list(set(lis2)) _l1.sort() _l2.sort() _l1_lacks = list() _l2_lacks = list() _i = _j = 0 _l1_length = len(_l1) _l2_length = len(_l2) while _i < _l1_length and _j < _l2_length: if _l1[_i] == _l2[_j]: # 相等情况, 双指针后移 _i += 1 _j += 1 elif _l1[_i] > _l2[_j]: # 不相等情况, l2中的元素l1中没有 _l1_lacks.append(_l2[_j]) _j += 1 else: # 不相等情况, l1中的元素l2中没有 _l2_lacks.append(_l1[_i]) _i += 1 if _i < _l1_length: # 当对比结束, l1剩余元素即为l2缺少元素 for _index in range(_i, _l1_length): # 循环添加至l1_lacks _l2_lacks.append(_l1[_index]) if _j < _l2_length: # 当对比结束, l2剩余元素即为l1缺少元素 for _index in range(_j, _l2_length): # 循环添加至l2_lacks _l1_lacks.append(_l2[_index]) return { 'equal': not (_l1_lacks or _l2_lacks), 'l1_lacks': _l1_lacks, 'l2_lacks': _l2_lacks, } # 测试代码 from random import randint from time import time min_range = 5 max_range = 10 quantity = lambda: randint(min_range, max_range) num = lambda: randint(-max_range, max_range) print('排序前:') l1 = list(num() for _ in range(quantity())) print(l1) l2 = list(num() for _ in range(quantity())) print(l2) print('开始对比') st = time() my_res = list_comparator(l1, l2) cost = time() - st print('对比结束') l1.sort() l2.sort() print('排序后:') print(l1) print(l2) print('对比结果:') print(my_res) print(f"Cost time: {cost:.2f}s")

测试代码运行结果:
排序前:
[6, -10, -10, 5, -8]
[-8, -2, 8, -6, 3, -8, 8]
开始对比
对比结束
排序后:
[-10, -10, -8, 5, 6]
[-8, -8, -6, -2, 3, 8, 8]
对比结果:
{‘equal’: False, ‘l1_lacks’: [-6, -2, 3, 8], ‘l2_lacks’: [-10, 5, 6]}
Cost time: 0.00s

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/997613.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号