>>> list_a = [1, 2, 3, 4, 5]
>>> list_b = [3]
>>> list_c = list(set(list_a)-set(list_b))
>>> list_c
[1, 2, 4, 5]

解决方案2

For 循环遍历列表 a,判断是否在列表 b 中:

>>> list_a = [1, 2, 3, 4, 5]
>>> list_b = [3]
>>> list_c = [i for i in list_a if i not in list_b]
>>> list_c
[1, 2, 4, 5]

对于 Python 中的列表减法问题,我们有两个解决方案。很明显方案 1 要比方案 2 要简单,但当处理大列表的时候,两者的速度如何?我们写代码做一个简单的实验来看一下。

import random
import time
def test(num):
    list_a = list(range(num))
    list_b = random.choices(list_a, k=int(num*0.001))
    def test_solution_1():
        t1 = time.time()
        list_c = list(set(list_a)-set(list_b))
        t2 = time.time()
        print(round(t2-t1, 2))  # 0.05s
    def test_solution_2():
        t1 = time.time()
        list_c = [i for i in list_a if i not in list_b]
        t2 = time.time()
        print(round(t2-t1, 2))  # 14.47s
    test_solution_1()
    test_solution_2()
if __name__ == '__main__':
    test(int(1e6))

列表 a 中有 100 万个元素,从中随机抽取 0.001 个百分比作为列表 b 中的元素,然后分别使用以上两种解决方案,计算时间。方案 1 用了 0.05 秒,方案 2 用了 14.47 秒,想必以后采用何种方案大家心里都应该清楚了。

https://www.cnblogs.com/python-selenium/p/3909175.html

v1 = [21, 34, 45] v2 = [55, 25, 77] #v = v2 - v1 # Error: TypeError: unsupported operand type(s) for -: 'list' and 'list' v = list(map(lambda x: x[0]-x[1], zip(v2, v1))) print("%s\n%s\n%s" %(v1, v2, v)) 运行结果:           一个是list1,list1 = [1, 2, 3, 4, 5]           一个是list2,list2 = [1, 4, 5]           我们如何得到一个新的listlist3,           list3中包括所有不在list2中出现的list1中的元素。           即:list3 = list1 – list2 解决方案:我们可以用set(集合)操作           list3 = list(set(list1) – set(list2)) 滑动平均滤波法:将连续取 n 个采样值看成一个队列(先进先出);每次先计算队列中 n 个数据的算术平均值,然后将新数据插入队尾,并移除原来的队首数据;直至没有新数据。这样,就得到了滤波结果。下面,我们尝试在 Python 中使用尽可能高的速度完成滑动平均值的计算。我们使用 numpy 构造一个长度为 10000 的随机数组作为测试数据; 问题描述:假设我有这样两个list,一个是list1,list1 = [1, 2, 3, 4, 5]一个是list2,list2 = [1, 4, 5]我们如何得到一个新的listlist3,list3中包括所有不在list2中出现的list1中的元素。即:list3 = list1 - list2解决方案:我们可以用set(集合)操作list3 = list(set(list1) - set(... 本文实例讲述了Python实现两个list对应元素相减操作。,具体如下:两个list的对应元素操作,这里以相减为例:# coding=gbkv1 = [21, 34, 45]v2 = [55, 25, 77]#v = v2 - v1 # Error: TypeError: unsupported operand type(s) for -: 'list' and 'list'v = li... list3 = [item for item in list1 if item not in set(list2)] print(list3) # [2, 6] print(set(list1) - set(list2)) # {2, 6} Traceback (most recent call last): File "<ipython-input-12-aae42d317509>", line 1, in <module> TypeError: unsupported operand type(s) for /: 'list' and 'list'