วิธีการในสถานที่
วิธีนี้เป็นกำลังสองเนื่องจากเรามีการค้นหาเชิงเส้นในรายการสำหรับทุกองค์ประกอบของรายการ (เพื่อที่เราจะต้องเพิ่มค่าใช้จ่ายของการจัดเรียงรายการเนื่องจากdels)
ที่กล่าวว่าเป็นไปได้ที่จะทำงานในสถานที่ถ้าเราเริ่มต้นจากจุดสิ้นสุดของรายการและดำเนินการต่อไปยังจุดเริ่มต้นลบแต่ละคำที่มีอยู่ในรายการย่อยทางด้านซ้าย
ความคิดในรหัสนี้เป็นเพียงแค่
for i in range(len(l)-1,0,-1): 
    if l[i] in l[:i]: del l[i] 
การทดสอบอย่างง่ายของการนำไปใช้
In [91]: from random import randint, seed                                                                                            
In [92]: seed('20080808') ; l = [randint(1,6) for _ in range(12)] # Beijing Olympics                                                                 
In [93]: for i in range(len(l)-1,0,-1): 
    ...:     print(l) 
    ...:     print(i, l[i], l[:i], end='') 
    ...:     if l[i] in l[:i]: 
    ...:          print( ': remove', l[i]) 
    ...:          del l[i] 
    ...:     else: 
    ...:          print() 
    ...: print(l)
[6, 5, 1, 4, 6, 1, 6, 2, 2, 4, 5, 2]
11 2 [6, 5, 1, 4, 6, 1, 6, 2, 2, 4, 5]: remove 2
[6, 5, 1, 4, 6, 1, 6, 2, 2, 4, 5]
10 5 [6, 5, 1, 4, 6, 1, 6, 2, 2, 4]: remove 5
[6, 5, 1, 4, 6, 1, 6, 2, 2, 4]
9 4 [6, 5, 1, 4, 6, 1, 6, 2, 2]: remove 4
[6, 5, 1, 4, 6, 1, 6, 2, 2]
8 2 [6, 5, 1, 4, 6, 1, 6, 2]: remove 2
[6, 5, 1, 4, 6, 1, 6, 2]
7 2 [6, 5, 1, 4, 6, 1, 6]
[6, 5, 1, 4, 6, 1, 6, 2]
6 6 [6, 5, 1, 4, 6, 1]: remove 6
[6, 5, 1, 4, 6, 1, 2]
5 1 [6, 5, 1, 4, 6]: remove 1
[6, 5, 1, 4, 6, 2]
4 6 [6, 5, 1, 4]: remove 6
[6, 5, 1, 4, 2]
3 4 [6, 5, 1]
[6, 5, 1, 4, 2]
2 1 [6, 5]
[6, 5, 1, 4, 2]
1 5 [6]
[6, 5, 1, 4, 2]
In [94]:                                                                                                                             
               
              
seen.addอาจมีการเปลี่ยนแปลงระหว่างการทำซ้ำและรันไทม์ไม่ฉลาดพอที่จะออกกฎ ในการเล่นที่ปลอดภัยจะต้องตรวจสอบวัตถุทุกครั้ง - หากคุณดูรหัส bytecode ด้วยdis.dis(f)คุณจะเห็นว่ามันประมวลผลLOAD_ATTRสำหรับaddสมาชิกในการวนซ้ำแต่ละครั้ง ideone.com/tz1Tll