ที่นี่ฉันกำลังเปรียบเทียบประสิทธิภาพของคำตอบทั้งหมดที่กล่าวถึงที่นี่ ตามที่คาดไว้การดำเนินการของ Arkku set
นั้นเร็วที่สุด
ความแตกต่างในการตั้งค่าของ Arkku - ครั้งแรก (0.124 usec ต่อวง)
mquadri$ python -m timeit -s "l1 = set([1,2,6,8]); l2 = set([2,3,5,8]);" "l1 - l2"
10000000 loops, best of 3: 0.124 usec per loop
รายการความเข้าใจของ Daniel Pryden พร้อมการset
ค้นหา - วินาที (0.302 usec ต่อวง)
mquadri$ python -m timeit -s "l1 = [1,2,6,8]; l2 = set([2,3,5,8]);" "[x for x in l1 if x not in l2]"
1000000 loops, best of 3: 0.302 usec per loop
ความเข้าใจในรายการของโดนัทในรายการธรรมดา - ที่สาม (0.552 usec ต่อวง)
mquadri$ python -m timeit -s "l1 = [1,2,6,8]; l2 = [2,3,5,8];" "[x for x in l1 if x not in l2]"
1000000 loops, best of 3: 0.552 usec per loop
การใช้ Moinuddin Quadri'sfilter
- Fourth (0.972 usec ต่อ loop)
mquadri$ python -m timeit -s "l1 = [1,2,6,8]; l2 = set([2,3,5,8]);" "filter(lambda x: x not in l2, l1)"
1000000 loops, best of 3: 0.972 usec per loop
Akshay Hazari ใช้การรวมกันของreduce
+filter
- ห้า (3.97 usec ต่อวง)
mquadri$ python -m timeit "l1 = [1,2,6,8]; l2 = [2,3,5,8];" "reduce(lambda x,y : filter(lambda z: z!=y,x) ,l1,l2)"
100000 loops, best of 3: 3.97 usec per loop