Hướng dẫn dùng delete duplicates python

list Python là một tập hợp các đối tượng có thứ tự, không được lập chỉ mục và có thể thay đổi. Chúng ta tạo nó bằng cách đặt các đối tượng có kiểu dữ liệu tương tự hoặc khác nhau bên trong dấu ngoặc vuông được phân tách bằng dấu phẩy. Để biết thêm về cách hoạt động của list Python, vui lòng tham khảo hướng dẫn này .

Xóa các mục trùng lặp khỏi list là một bước xử lý trước dữ liệu quan trọng - ví dụ: xác định những khách hàng duy nhất đã mua hàng từ cửa hàng quà tặng trong tháng qua để nhận ưu đãi khuyến mại. Một số khách hàng có thể đã mua quà tặng từ cửa hàng nhiều hơn một lần trong tháng qua và tên của họ sẽ xuất hiện nhiều lần khi họ ghé thăm cửa hàng.

Trong hướng dẫn này, chúng ta sẽ tìm hiểu các phương pháp khác nhau để xóa các bản sao khỏi list Python.

1. Sử dụng 
['Python', 'R', 'C#', 'Java']
2từ khóa

Chúng ta sử dụng 

['Python', 'R', 'C#', 'Java']
2từ khóa để xóa các đối tượng khỏi list với vị trí chỉ mục của chúng. Chúng ta sử dụng phương pháp này khi kích thước của list nhỏ và không có nhiều phần tử trùng lặp. Ví dụ, một lớp sáu sinh viên được hỏi về ngôn ngữ lập trình yêu thích của họ và câu trả lời của họ được lưu trong 
['Python', 'R', 'C#', 'Java']
4list. Một số sinh viên thích cùng một ngôn ngữ lập trình, vì vậy chúng ta có các bản sao trong 
['Python', 'R', 'C#', 'Java']
4list mà chúng ta sẽ xóa bằng cách sử dụng 
['Python', 'R', 'C#', 'Java']
2từ khóa.

students = ['Python', 'R', 'C#', 'Python', 'R', 'Java']

# Remove the `Python` duplicate with its index number: 3
del students[3]

print[students]
['Python', 'R', 'C#', 'R', 'Java']
# Remove the `R` duplicate with its index number: 3
del students[3]

print[students]
['Python', 'R', 'C#', 'Java']

Chúng ta đã xóa thành công các bản sao khỏi list. Nhưng tại sao chúng ta lại sử dụng chỉ mục 3 hai lần? list 

['Python', 'R', 'C#', 'Java']
7ban đầu 
['Python', 'R', 'C#', 'Java']
4là 6. list Python không được lập chỉ mục. Phần tử đầu tiên trong list có chỉ số là 0 và phần tử cuối cùng có chỉ số là 5. Phần tử trùng lặp 
['Python', 'R', 'C#', 'Java']
9có chỉ số là 3. Sau khi xóa phần tử 
['Python', 'R', 'C#', 'Java']
9trùng lặp, phần 
['Python', 'R', 'C#', 'Java']
7tử của 
['Python', 'R', 'C#', 'Java']
4list giảm đi 1. Phần tử sau bản sao 
['Python', 'R', 'C#', 'Java']
9bây giờ giả định vị trí chỉ mục của nó. Đây là lý do tại sao 
# Using for-loop
students = ['Python', 'R', 'C#', 'Python', 'R', 'Java']

new_list = []

for one_student_choice in students:
    if one_student_choice not in new_list:
        new_list.append[one_student_choice]

print[new_list]
4chỉ mục trùng lặp thay đổi từ 4 thành 3. Nhược điểm của việc sử dụng phương pháp này là chúng ta phải theo dõi các chỉ số của các bản sao luôn thay đổi. Điều này sẽ khó đối với một list rất lớn.

Tiếp theo, chúng ta sẽ xóa các bản sao khỏi list bằng cách sử dụng hiệu quả hơn 

# Using for-loop
students = ['Python', 'R', 'C#', 'Python', 'R', 'Java']

new_list = []

for one_student_choice in students:
    if one_student_choice not in new_list:
        new_list.append[one_student_choice]

print[new_list]
5.

2. Sử dụng
# Using for-loop
students = ['Python', 'R', 'C#', 'Python', 'R', 'Java']

new_list = []

for one_student_choice in students:
    if one_student_choice not in new_list:
        new_list.append[one_student_choice]

print[new_list]
5

Chúng ta sử dụng 

# Using for-loop
students = ['Python', 'R', 'C#', 'Python', 'R', 'Java']

new_list = []

for one_student_choice in students:
    if one_student_choice not in new_list:
        new_list.append[one_student_choice]

print[new_list]
5để lặp qua một list có thể lặp lại: ví dụ, một list Python. Để có người tham khảo về cách 
# Using for-loop
students = ['Python', 'R', 'C#', 'Python', 'R', 'Java']

new_list = []

for one_student_choice in students:
    if one_student_choice not in new_list:
        new_list.append[one_student_choice]

print[new_list]
5hoạt động, vui lòng tham khảo hướng dẫn vòng lặp này trên blog DataQuest.

Để loại bỏ các bản sao bằng cách sử dụng 

# Using for-loop
students = ['Python', 'R', 'C#', 'Python', 'R', 'Java']

new_list = []

for one_student_choice in students:
    if one_student_choice not in new_list:
        new_list.append[one_student_choice]

print[new_list]
5, trước tiên, bạn tạo một list trống mới. Sau đó, bạn lặp lại các phần tử trong list có chứa các bản sao và chỉ thêm lần xuất hiện đầu tiên của mỗi phần tử trong list mới. Đoạn mã dưới đây cho thấy cách sử dụng 
# Using for-loop
students = ['Python', 'R', 'C#', 'Python', 'R', 'Java']

new_list = []

for one_student_choice in students:
    if one_student_choice not in new_list:
        new_list.append[one_student_choice]

print[new_list]
5để xóa các bản sao khỏi 
['Python', 'R', 'C#', 'Java']
4list.

# Using for-loop
students = ['Python', 'R', 'C#', 'Python', 'R', 'Java']

new_list = []

for one_student_choice in students:
    if one_student_choice not in new_list:
        new_list.append[one_student_choice]

print[new_list]
['Python', 'R', 'C#', 'Java']

Voilà! Chúng ta đã xóa thành công các bản sao mà không cần phải theo dõi các chỉ số của phần tử. Phương pháp này có thể giúp chúng ta loại bỏ các bản sao trong một list lớn. Tuy nhiên, điều này đòi hỏi rất nhiều mã. Nên có một cách đơn giản hơn để làm điều này. Đoán nào?

Liệt kê dễ hiểu! Chúng ta sẽ đơn giản hóa đoạn mã trên bằng cách sử dụng tính năng hiểu list trong ví dụ tiếp theo:

# Using list comprehension
new_list = []

[new_list.append[item] for item in students if item not in new_list]

print[new_list]
['Python', 'R', 'C#', 'Java']

Chúng ta đã hoàn thành công việc với ít dòng mã hơn. Chúng ta có thể kết hợp 

# Using for-loop
students = ['Python', 'R', 'C#', 'Python', 'R', 'Java']

new_list = []

for one_student_choice in students:
    if one_student_choice not in new_list:
        new_list.append[one_student_choice]

print[new_list]
5với các hàm 
['Python', 'R', 'C#', 'Java']
3và 
['Python', 'R', 'C#', 'Java']
4để viết các đoạn mã lạ nhằm loại bỏ các đoạn mã trùng lặp. Ý tưởng đằng sau cách các mã này hoạt động giống như trong các ví dụ được hiển thị ở trên.

Tiếp theo, chúng ta sẽ xem cách xóa các bản sao khỏi list mà không cần lặp lại bằng cách sử dụng a 

['Python', 'R', 'C#', 'Java']
5.

3. Sử dụng
['Python', 'R', 'C#', 'Java']
5

Tập hợp trong Python là các tập hợp không có thứ tự của các phần tử duy nhất. Theo bản chất của chúng, các bản sao không được phép. Do đó, việc chuyển đổi một list thành một tập hợp sẽ loại bỏ các bản sao. Thay đổi tập hợp thành một list sẽ tạo ra một list mới không có bản sao.

Ví dụ sau đây cho thấy cách loại bỏ các bản sao khỏi 

['Python', 'R', 'C#', 'Java']
4list bằng cách sử dụng 
['Python', 'R', 'C#', 'Java']
5.

# Removing duplicates by first changing to a set and then back to a list
new_list = list[set[students]]

print[new_list]
['R', 'Python', 'Java', 'C#']

Lưu ý rằng thứ tự của các phần tử trong list khác với các ví dụ trước của chúng ta. Điều này là do một 

['Python', 'R', 'C#', 'Java']
5đơn đặt hàng không bảo toàn. Tiếp theo, chúng ta sẽ xem cách xóa các từ trùng lặp khỏi list bằng cách sử dụng từ điển.

4. Sử dụng
# Using list comprehension
new_list = []

[new_list.append[item] for item in students if item not in new_list]

print[new_list]
0

Từ điển Python là một tập hợp các cặp khóa-giá trị với yêu cầu là các khóa phải là duy nhất. Vì vậy, chúng ta sẽ xóa các bản sao trong list Python nếu chúng ta có thể làm cho các phần tử của list trở thành khóa của từ điển. Chúng ta không thể chuyển đổi 

['Python', 'R', 'C#', 'Java']
4list đơn giản thành từ điển vì từ điển được tạo bằng cặp khóa-giá trị. Chúng ta gặp lỗi sau nếu chúng ta cố gắng chuyển đổi 
['Python', 'R', 'C#', 'Java']
4list sang từ điển:

['Python', 'R', 'C#', 'R', 'Java']
0
['Python', 'R', 'C#', 'R', 'Java']
1

Tuy nhiên, chúng ta có thể tạo một từ điển từ một list các bộ giá trị - sau đó chúng ta sẽ lấy các khóa duy nhất của từ điển và chuyển chúng thành một list. Một cách được vector hóa để lấy list các bộ giá trị từ 

['Python', 'R', 'C#', 'Java']
4list là sử dụng chức năng bản đồ:

['Python', 'R', 'C#', 'R', 'Java']
2
['Python', 'R', 'C#', 'R', 'Java']
3

Trong khối mã trên, mọi phần tử trong 

['Python', 'R', 'C#', 'Java']
4list được chuyển qua 
# Using list comprehension
new_list = []

[new_list.append[item] for item in students if item not in new_list]

print[new_list]
5hàm để tạo một bộ giá trị 
# Using list comprehension
new_list = []

[new_list.append[item] for item in students if item not in new_list]

print[new_list]
6,. Khi list các bộ giá trị được thay đổi thành một từ điển, phần tử đầu tiên trong bộ giá trị là khóa và phần tử thứ hai là giá trị. Các khóa duy nhất là từ từ điển với 
# Using list comprehension
new_list = []

[new_list.append[item] for item in students if item not in new_list]

print[new_list]
7phương thức và được thay đổi thành một list:

['Python', 'R', 'C#', 'R', 'Java']
4
['Python', 'R', 'C#', 'R', 'Java']
5
['Python', 'R', 'C#', 'R', 'Java']
6
['Python', 'R', 'C#', 'R', 'Java']
7

Phương 

# Using list comprehension
new_list = []

[new_list.append[item] for item in students if item not in new_list]

print[new_list]
8pháp chuyển đổi một list thành một list các bộ giá trị và list các bộ giá trị thành một từ điển trong một lần thực hiện. Sau đó, chúng ta có thể lấy các khóa từ điển duy nhất và chuyển đổi chúng thành một list. Tuy nhiên, chúng ta đã sử dụng 
# Using list comprehension
new_list = []

[new_list.append[item] for item in students if item not in new_list]

print[new_list]
9phương pháp này để lấy các khóa duy nhất từ ​​từ điển trước khi chuyển đổi thành list. Điều này không thực sự cần thiết. Theo mặc định, các thao tác trên từ điển như lặp và chuyển đổi thành list sử dụng các khóa từ điển.

['Python', 'R', 'C#', 'R', 'Java']
8
['Python', 'R', 'C#', 'R', 'Java']
9

4. Sử dụng 
['Python', 'R', 'C#', 'Java']
0và
['Python', 'R', 'C#', 'Java']
1

Chúng ta có thể xóa các bản sao khỏi list Python bằng cách sử dụng các lớp con từ điển như 

['Python', 'R', 'C#', 'Java']
0và 
['Python', 'R', 'C#', 'Java']
1. Cả hai 
['Python', 'R', 'C#', 'Java']
0và 
['Python', 'R', 'C#', 'Java']
1hoạt động theo cùng một cách. Chúng là các tập hợp trong đó các phần tử duy nhất là các khóa từ điển và số lần xuất hiện của chúng là các giá trị. Như trong từ điển, list không có bản sao đến từ các khóa từ điển.

# Remove the `R` duplicate with its index number: 3
del students[3]

print[students]
0
# Remove the `R` duplicate with its index number: 3
del students[3]

print[students]
1
# Remove the `R` duplicate with its index number: 3
del students[3]

print[students]
2
# Remove the `R` duplicate with its index number: 3
del students[3]

print[students]
3

5. Sử dụng 
['Python', 'R', 'C#', 'Java']
6và
['Python', 'R', 'C#', 'Java']
7

Cả hai 

['Python', 'R', 'C#', 'Java']
6và 
['Python', 'R', 'C#', 'Java']
7lấy một list có các bản sao và trả về một mảng duy nhất của các phần tử trong list. Các mảng kết quả được chuyển đổi thành list. Trong khi 
['Python', 'R', 'C#', 'Java']
7sắp xếp các phần tử duy nhất theo thứ tự tăng dần, 
['Python', 'R', 'C#', 'Java']
6vẫn duy trì thứ tự của các phần tử trong list.

# Remove the `R` duplicate with its index number: 3
del students[3]

print[students]
4
# Remove the `R` duplicate with its index number: 3
del students[3]

print[students]
5

Ứng dụng: Cửa hàng quà tặng được xem lại

Trong phần này, chúng ta sẽ xem lại minh họa cửa hàng quà tặng của chúng ta. Cửa hàng quà tặng có 50 người. Trung bình có 10 người mua hàng tại cửa hàng mỗi ngày và cửa hàng mở cửa 10 ngày trong tháng. Bạn đã nhận được list list có tên của những khách hàng đã mua hàng của cửa hàng trong tháng trước và nhiệm vụ của bạn là lấy tên của những khách hàng duy nhất để nhận ưu đãi khuyến mại.

# Remove the `R` duplicate with its index number: 3
del students[3]

print[students]
6
# Remove the `R` duplicate with its index number: 3
del students[3]

print[students]
7

Trong khối mã trên, chúng ta đã tạo ngẫu nhiên những khách hàng đã mua hàng từ cửa hàng trong tháng qua dưới dạng list list. Chúng ta muốn có được những khách hàng duy nhất đã mua hàng từ cửa hàng mỗi tháng, vì vậy chúng ta sẽ tạo 

# Removing duplicates by first changing to a set and then back to a list
new_list = list[set[students]]

print[new_list]
2chức năng cho nhiệm vụ này.

Chúng ta đã bao gồm các kiểu dữ liệu đầu vào và đầu ra tùy chọn. Python là một ngôn ngữ lập trình được gõ động và xử lý ngầm điều này trong thời gian chạy. Tuy nhiên, rất hữu ích khi hiển thị các kiểu dữ liệu đầu vào và đầu ra cho các cấu trúc dữ liệu phức tạp. Ngoài ra, chúng ta có thể mô tả đầu vào và đầu ra của hàm bằng a 

# Removing duplicates by first changing to a set and then back to a list
new_list = list[set[students]]

print[new_list]
3. 
# Removing duplicates by first changing to a set and then back to a list
new_list = list[set[students]]

print[new_list]
4cho chúng ta biết rằng 
# Removing duplicates by first changing to a set and then back to a list
new_list = list[set[students]]

print[new_list]
5tham số là một list chứa các list với các chuỗi và 
# Removing duplicates by first changing to a set and then back to a list
new_list = list[set[students]]

print[new_list]
6cho chúng ta biết rằng hàm trả về một list chứa các bộ giá trị với một chuỗi và một số nguyên.

# Remove the `R` duplicate with its index number: 3
del students[3]

print[students]
8
# Remove the `R` duplicate with its index number: 3
del students[3]

print[students]
9

Tên của khách hàng được tạo ngẫu nhiên - tên của khách hàng có thể khác nếu bạn không sử dụng cùng một 

# Removing duplicates by first changing to a set and then back to a list
new_list = list[set[students]]

print[new_list]
7giá trị. Tên của những khách hàng duy nhất trong đó 
# Removing duplicates by first changing to a set and then back to a list
new_list = list[set[students]]

print[new_list]
8xuất phát từ việc đầu tiên chuyển đổi list các bộ giá trị sang một từ điển và sau đó chuyển đổi các khóa từ điển thành một list:

Chủ Đề