python中如何比较两个列表不同


本文摘自php中文网,作者尚,侵删。

通过不断的测试发现,python实现高效快速比对两个列表的不同,可借助python集合set()提供的集合运算进行操作,此方式效率非常高.

而在java语言中,如下方法中方法1相比方法2(集合运算)的方式效率更高速度更快一些.这算是两种语言相通之处的一点不同吧.

代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

#-*- coding:utf-8 -*-

import time

 

#方法1:

def getDiff1(arr1,arr2):

    start_time = time.time()

    print('1_start:',start_time)

    arr_more1 = []

    arr_more2 = []

    dic_result = {}

 

    for str_1 in arr1:

        dic_result[str(str_1)] = 1

 

    for str_2 in arr2:

        if dic_result.get(str(str_2)):

            dic_result[str(str_2)] = 2

        else:

            arr_more2.append(str_2)

 

    for key,val in dic_result.items():

        if val == 1:

            arr_more1.append(key)

 

    print('arr1比arr2多的内容为:',len(arr_more1))

    print('arr2比arr1多的内容为:',len(arr_more2))

 

    end_time = time.time()

    print('1_end:',end_time)

    print('方法1_比对用时为',end_time-start_time)

 

 

#方法2:使用集合运算:

def getDiff2(arr1,arr2):

    start_time = time.time()

    print('2_start:',start_time)

    set_1 = ()

    set_2 = ()

 

    #将列表转换为集合set()

    set_1 = set(arr1)

    set_2 = set(arr2)

 

    set_more1 = ()

    set_more2 = ()

 

    #集合运算

    set_1_2 = set_1 & set_2

    set_more1 = set_1 -set_1_2

    set_more2 = set_2 -set_1_2

 

    print('arr1比arr2多的内容为:',len(set_more1))

    print('arr2比arr1多的内容为:',len(set_more2))

 

    end_time = time.time()

    print('2_end:',end_time)

    print('方法2_比对用时为',end_time-start_time)

 

#测试

 

# 初始化500w条数据数据

arr1 = []

arr2 = []

i = 0

while(True):

    arr1.append(i * 2)

    arr2.append(i * 3)

    i += 1

    if i > 5000000:

        break

 

print('arr1的长度为:',len(arr1))

print('arr2的长度为:',len(arr2))

print('+'*30)

getDiff1(arr1,arr2)

print('-'*30)

getDiff2(arr1,arr2)

运行结果:

1.jpg

更多Python相关技术文章,请访问Python教程栏目进行学习!

以上就是python中如何比较两个列表不同的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

Python中sympy代数符号运算的介绍

Python内置的pickle库的对象序列化与反序列化

php与Python的区别

Python中函数部分内容的解析

Python怎么输入多行

Python递归函数,二分查找算法简介

Python的序列化和反序列化模块的简单介绍(实例代码)

Python字符串拼接格式化输出的三种方法介绍

Python字典的清单如何使用

Python找工作难吗

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...