014.列表对比:将列表a中的同时也在b列表中出现的元素移除,并且保留原有的位置顺序。函数返回对比后的列表。
题目来源:codcwars
# @-*- coding: utf-8 -*-
# @File: python每日一练1018.py
# @Time: 2021/10/18 15:30
# @Author: 师玉幺叔
# @Software: Pycharm
"""
给定两个数字列表a 和 b,请编写一个函数list_diff(a, b),
将列表a中的同时也在b列表中出现的元素移除,并且保留原有的位置顺序。函数返回对比后的列表。
示例:
输入:a=[1,2], b=[1],输出:[2]
输入:a=[1,2,2,2,3], b=[2],输出:[1, 3]
题目难度:中等
"""
def list_diff(a: list, b: list) -> list:
for i in range(-len(a), 0):
if a[i] in b:
a.pop(i)
return a
if __name__ == '__main__':
assert list_diff([1, 2], [1]) == [2]
assert list_diff([1, 2, 2], [1]) == [2, 2]
assert list_diff([1, 2, 2, 2, 3], [2]) == [1, 3]
assert list_diff([1, 2, 2, 2, 3, 4, 5, 4], [2, 4]) == [1, 3, 5]