比如,现在有两个list类型:

a_list = [1,2,3,4]
b_list = [1,4,5]

一. 差集
很明显结果是[2,3,5],下面我们说一下具体方法。
方法a.正常法:

    ret_list = []
    for item in a_list:
        if item not in b_list:
            ret_list.append(item)
    for item in b_list:
        if item not in a_list:
            ret_list.append(item)

方法b.简化版:

ret_list = [item for item in a_list if item not in b_list] + [item for item in b_list if item not in a_list]

方法c.高级版:

ret_list = list(set(a_list)^set(b_list))
    

二. 并集
很明显结果是[1,2,3,4,5],下面是具体方法:

ret_list = list(set(a_list).union(set(b_list)))

三. 交集
很明显结果是[1,4],下面是具体方法:

ret_list = list((set(a_list).union(set(b_list)))^(set(a_list)^set(b_list)))

你可能感兴趣的文章

15 条评论
苏生不惑 · 2014年11月08日

set好方便

回复

Moxmi 作者 · 2014年11月08日

各种操作( ̄∇ ̄)

回复

独自等待 · 2014年12月17日

很好的方法!!

回复

shenxgan · 2015年11月10日

差集中的方法b.简化版 有问题吧~~~

回复

Moxmi 作者 · 2015年11月10日

没有呀,运行过~

回复

shenxgan · 2015年11月10日

我这里运行结果是 [2, 3]

回复

Moxmi 作者 · 2015年11月10日

...前两个都有问题

回复

Moxmi 作者 · 2015年11月10日

多谢提醒...

回复

Moxmi 作者 · 2015年11月10日

你再看看!

回复

shenxgan · 2015年11月10日

嗯,没有问题了。想着文章都发表一年多了,没想到你回复这么快,赞一个。

回复

shenxgan · 2015年11月10日

我添加一个交集的简化版:
ret_list = [item for item in set(a_list) if item in set(b_list)]

回复

Moxmi 作者 · 2015年11月10日

这个就用到了set()了,和高级版有所重叠啦~

回复

侠之大者 · 2016年01月06日

写得还行

回复

johnnyyanbeijing · 2016年11月11日

thx

回复

作死阮 · 2016年12月08日

加入两个数组为:
a_list = [1,2,3,4,4]
b_list = [1,4,4,5]
这样结果不对吧?

回复

载入中...
Moxmi Moxmi

1.6k 声望

发布于专栏

Code and Cole

杂.

4 人关注