经常会碰倒从列表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'}
备注: 使用集合的方法来求的话,顺序会变化,但相对速度会快很多!