Trang chủHướng dẫnCách xóa phần tử trùng lặp khỏi Python list

Cách xóa phần tử trùng lặp khỏi Python list

CyStack blog 3 phút để đọc
CyStack blog14/09/2025
Locker Avatar

Chris Pham

Technical Writer

Locker logo social
Reading Time: 3 minutes

 

xóa các phần tử trùng lặp khỏi Python List

Có nhiều cách để xóa phần tử trùng lặp khỏi Python List.

  • Sử dụng một Temporary List và lặp (Looping)
  • Sử dụng phương thức dựng sẵn set()
  • Sử dụng các khóa (Keys) của Dictionary
  • Sử dụng hàm count() của List
  • List Comprehension

Xóa các phần tử trùng lặp khỏi Python List

Python list có thể chứa các phần tử trùng lặp. Hãy cùng xem các ví dụ về cách xóa các phần tử trùng lặp theo những cách khác nhau.

1. Sử dụng Temporary List

Đây là cách thô sơ để xóa các phần tử trùng lặp khỏi một list. Chúng ta sẽ tạo một temporary list (list tạm thời) và chỉ thêm các phần tử vào đó nếu nó chưa tồn tại.

ints_list = [1, 2, 3, 4, 3, 2]

temp = []

for x in ints_list:
    if x not in temp:
        temp.append(x)

ints_list = temp

print(f'Updated List after removing duplicates = {temp}')

Output: Updated List after removing duplicates = [1, 2, 3, 4]

2. Sử dụng hàm set()

Python set không chứa các phần tử trùng lặp. Chúng ta có thể sử dụng hàm dựng sẵn set() để chuyển đổi list thành một set, sau đó sử dụng hàm list() để chuyển đổi nó trở lại thành list.

ints_list = [1, 2, 3, 4, 3, 2]

ints_list1 = list(set(ints_list))
print(ints_list1)  # [1, 2, 3, 4]

3. Sử dụng các phần tử List làm Dictionary Keys

Chúng ta biết rằng các khóa của dictionary là duy nhất. Lớp dict có hàm fromkeys() chấp nhận một iterable để tạo dictionary với các khóa từ iterable.

ints_list = [1, 2, 3, 4, 3, 2]

ints_list2 = list(dict.fromkeys(ints_list))
print(ints_list2)  # [1, 2, 3, 4]

4. Sử dụng hàm count() của List – Không được khuyến khích

Phương thức count() của list trả về số lần xuất hiện của giá trị. Chúng ta có thể sử dụng nó với phương thức remove() để loại bỏ các phần tử trùng lặp khỏi list.

ints_list = [1, 2, 3, 4, 3, 2]

for x in ints_list:
    if ints_list.count(x) > 1:
        ints_list.remove(x)
print(ints_list)  # [1, 2, 3, 4]

LƯU Ý: Như đã chỉ ra trong bình luận dưới đây, việc sử dụng hàm count() không được khuyến khích khi xóa phần tử từ cùng một iterator vì nó có thể dẫn đến kết quả không mong muốn. Ví dụ:

values = [87, 94, 45, 94, 94, 41, 65, 94, 41, 99, 94, 94, 94]

for x in values:
    if values.count(x) > 1:
        values.remove(x)
print(values)  # [87, 45, 65, 41, 99, 94, 94] - 94 is still present twice

5. List Comprehension

Chúng ta có thể tạo một list từ một iterable bằng cách sử dụng List Comprehension. Kỹ thuật này giống như việc sử dụng temporary list và for loop để xóa các phần tử trùng lặp. Tuy nhiên, nó giúp giảm số dòng code.

int_list = [1, 2, 3, 4, 3, 2]
temp = []
[temp.append(x) for x in ints_list if x not in temp]
print(temp)  # [1, 2, 3, 4]

Cách tốt nhất để xóa các phần tử trùng lặp khỏi một List

Nếu bạn không muốn có các phần tử trùng lặp, bạn nên sử dụng Set. Nhưng nếu bạn phải xóa các giá trị trùng lặp từ một list, thì tôi sẽ ưu tiên sử dụng hàm count() vì nó không tạo ra một temporary set hoặc list object khác. Do đó, nó hiệu quả hơn về mặt bộ nhớ (memory efficient).

0 Bình luận

Đăng nhập để thảo luận

Chuyên mục Hướng dẫn

Tổng hợp các bài viết hướng dẫn, nghiên cứu và phân tích chi tiết về kỹ thuật, các xu hướng công nghệ mới nhất dành cho lập trình viên.

Đăng ký nhận bản tin của chúng tôi

Hãy trở thành người nhận được các nội dung hữu ích của CyStack sớm nhất

Xem chính sách của chúng tôi Chính sách bảo mật.

Đăng ký nhận Newsletter

Nhận các nội dung hữu ích mới nhất