Python列表的差集

经常会碰倒从列表A中含B中的元素的排除的情况下,比如说:

列表A = ['2018-01-01','2018-02-01','2018-03-01','2018-04-01']

列表B = ['2018-03-01','2018-03-08']

要将A中的元素2018-03-01元素排除,可以用到的方法如下:

方法一:常规方法

>>> A = ['2018-01-01','2018-02-01','2018-03-01','2018-04-01']
>>> B = ['2018-03-01','2018-03-08']
>>> for item1 in A:
	    for item2 in B:
		    if item1 == item2:
			    A.remove(item2)		
>>> print(A)
['2018-01-01', '2018-02-01', '2018-04-01']

方法二:列表推导

>>> A = ['2018-01-01','2018-02-01','2018-03-01','2018-04-01']
>>> B = ['2018-03-01','2018-03-08']
>>> [item for item in A if not item in B]
['2018-01-01', '2018-02-01', '2018-04-01']

方法三: 用集合的求差集

>>> A = ['2018-01-01','2018-02-01','2018-03-01','2018-04-01']
>>> B = ['2018-03-01','2018-03-08']
>>> set(A) - set(B)
{'2018-04-01', '2018-01-01', '2018-02-01'}

备注: 使用集合的方法来求的话,顺序会变化,但相对速度会快很多!

Python列表的差集_第1张图片

你可能感兴趣的:(【编程语言】)