ภาพรวม
จาก 2 list ความยาวเท่ากัน ให้ลบ element ใน list ที่ 2 ที่ index ตรงกับตำแหน่งของ duplicate elements ใน list ที่ 1
ตัวอย่างโค้ด
my_list_1 = [4, 5, 6, 5, 4, 7, 8, 6]
my_list_2 = [1, 7, 6, 4, 7, 9, 10, 11]
print("The first list is:", my_list_1)
print("The second list is:", my_list_2)
# หา index ของ duplicates ใน list_1
seen = set()
dup_indices = []
for idx, val in enumerate(my_list_1):
if val in seen:
dup_indices.append(idx)
else:
seen.add(val)
# คัด list_2 เฉพาะ index ที่ไม่อยู่ใน dup_indices
my_result = [val for idx, val in enumerate(my_list_2) if idx not in dup_indices]
print("The result is:", my_result)
ผลลัพธ์
The first list is: [4, 5, 6, 5, 4, 7, 8, 6]
The second list is: [1, 7, 6, 4, 7, 9, 10, 11]
The result is: [1, 7, 6, 9, 10]
คำอธิบาย Index
| Index | list_1 | Duplicate? | list_2 | Keep? |
|---|---|---|---|---|
| 0 | 4 | First | 1 | ✓ |
| 1 | 5 | First | 7 | ✓ |
| 2 | 6 | First | 6 | ✓ |
| 3 | 5 | Yes (idx 1) | 4 | ✗ |
| 4 | 4 | Yes (idx 0) | 7 | ✗ |
| 5 | 7 | First | 9 | ✓ |
| 6 | 8 | First | 10 | ✓ |
| 7 | 6 | Yes (idx 2) | 11 | ✗ |
เวอร์ชัน Pandas (สะดวกกว่าสำหรับข้อมูลใหญ่)
import pandas as pd
s1 = pd.Series(my_list_1)
s2 = pd.Series(my_list_2)
mask = ~s1.duplicated(keep='first')
result = s2[mask].tolist()