So sánh hai danh sách và loại bỏ các danh sách trùng lặp Python

Vì danh sách python là một tập hợp nhiều phần tử thậm chí chứa các phần tử trùng lặp, đôi khi cần phải làm cho danh sách trở nên độc nhất. Ở đây, chúng ta sẽ nghiên cứu nhiều cách để loại bỏ các bản sao khỏi danh sách trong python. Vậy hãy bắt đầu

Danh sách là gì?

Danh sách là kiểu dữ liệu quan trọng nhất trong ngôn ngữ python. Trong ngôn ngữ Python, danh sách được viết dưới dạng danh sách các giá trị được phân tách bằng dấu phẩy bên trong dấu ngoặc vuông. Ưu điểm quan trọng nhất của danh sách là các phần tử bên trong danh sách không bắt buộc phải có cùng kiểu dữ liệu và lập chỉ mục phủ định

Ngoài ra, mọi thao tác của chuỗi cũng được áp dụng tương tự cho kiểu dữ liệu danh sách như cắt, nối, v.v. Ngoài ra, chúng ta có thể tạo một danh sách lồng nhau. danh sách e chứa danh sách khác

Ví dụ

# creating a list of items with different data types 
sample_list = [6,"mark",[A,I]] 
print(sample_list)

 

đầu ra

 [6, mark, ['A', 'I']]

 

Cần loại bỏ các bản sao khỏi danh sách là gì?

Có một số lý do để làm điều đó. Các bản sao trong danh sách có thể gây khó đọc và khó hiểu. Nó cũng có thể chiếm không gian không cần thiết. Đây là những lý do chính để loại bỏ các bản sao khỏi danh sách python. Ngoài ra, nó có thể dẫn đến nhầm lẫn và lỗi nếu bạn đang sử dụng danh sách cho một số hoạt động nhất định

Ví dụ: nếu bạn đang cố tìm các phần tử duy nhất trong danh sách, các phần tử trùng lặp có thể cho bạn kết quả không chính xác. Nói chung, bạn nên xóa các mục trùng lặp khỏi danh sách để làm cho danh sách có tổ chức hơn và dễ làm việc hơn

5 cách để loại bỏ các bản sao khỏi danh sách trong Python

Có nhiều cách để loại bỏ các bản sao khỏi danh sách trong python. Hãy cùng nghiên cứu chúng dưới đây

Phương pháp 1) Phương pháp Naïve

Trong phương pháp này, chúng tôi sẽ lặp lại toàn bộ danh sách bằng vòng lặp for. Chúng tôi sẽ tạo một danh sách mới để giữ tất cả các giá trị duy nhất và sử dụng toán tử "không có trong" trong python để tìm hiểu xem phần tử hiện tại mà chúng tôi đang kiểm tra có tồn tại trong danh sách mới mà chúng tôi đã tạo không. Nếu nó không tồn tại, chúng tôi sẽ thêm nó vào danh sách mới và nếu nó tồn tại, chúng tôi sẽ bỏ qua nó

Mã số

# removing duplicated from the list using naive methods 

# initializing list 
sam_list = [11, 13, 15, 16, 13, 15, 16, 11] 
print ("The list is: " + str(sam_list)) 

# remove duplicated from list 
result = [] 
for i in sam_list: 
    if i not in result: 
        result.append(i) 

# printing list after removal 
print ("The list after removing duplicates : " + str(result)) 

 

đầu ra

 The list is: [11, 13, 15, 16, 13, 15, 16, 11]

 The list after removing duplicates: [11, 13, 15, 16]

 

Phương pháp 2) Sử dụng cách hiểu danh sách

Hiểu danh sách đề cập đến việc sử dụng vòng lặp for để tạo danh sách và sau đó lưu trữ danh sách đó dưới tên biến. Phương thức này tương tự như cách tiếp cận ngây thơ mà chúng ta đã thảo luận ở trên nhưng thay vì sử dụng vòng lặp for bên ngoài, nó tạo vòng lặp for bên trong dấu ngoặc vuông của danh sách. Phương pháp này được gọi là hiểu danh sách

Chúng tôi sử dụng vòng lặp for bên trong dấu ngoặc nhọn danh sách và thêm điều kiện if cho phép chúng tôi lọc ra các giá trị trùng lặp

Mã số

# removing duplicated from the list using list comprehension 

# initializing list 
sam_list = [11, 13, 15, 16, 13, 15, 16, 11] 
print ("The list is: " + str(sam_list)) 

 
# to remove duplicated from list 
result = [] 
[result.append(x) for x in sam_list if x not in result] 

# printing list after removal 
print ("The list after removing duplicates: " + str(result)) 

 

đầu ra

 The list is: [11, 13, 15, 16, 13, 15, 16, 11]

 The list after removing duplicates: [11, 13, 15, 16]

 

Cách 3) Sử dụng set()

Phương pháp này là phương pháp phổ biến nhất để xóa bản sao khỏi danh sách python. Tập hợp là một cấu trúc dữ liệu rất giống với danh sách. Nó là một tập hợp các mục có thể được truy cập bằng một tên biến duy nhất. Nhưng thuộc tính quan trọng nhất của một tập hợp là nó không thể có các giá trị trùng lặp. Làm thế nào chúng ta có thể sử dụng này?

Nếu một danh sách được đánh máy thành một tập hợp, nghĩa là nó được truyền dưới dạng đối số cho phương thức set(), nó sẽ tự động tạo một tập hợp bao gồm tất cả các phần tử trong danh sách nhưng nó sẽ không giữ các giá trị trùng lặp. Tập hợp kết quả có thể được chuyển đổi trở lại danh sách bằng phương thức list(). Hạn chế duy nhất của phương pháp này là bạn mất thứ tự tồn tại trong danh sách ban đầu

Mã số

# removing duplicated from the list using set() 

# initializing list 
sam_list = [11, 15, 13, 16, 13, 15, 16, 11] 
print ("The list is: " + str(sam_list)) 

# to remove duplicated from list 
sam_list = list(set(sam_list)) 

# printing list after removal 
# ordering distorted
print ("The list after removing duplicates: " + str(sam_list)) 

 

đầu ra

 The list is: [11, 13, 15, 16, 13, 15, 16, 11]

 The list after removing duplicates: [11, 13, 15, 16]

 

Cách 4) Sử dụng danh sách toàn diện + liệt kê ()

Danh sách toàn diện khi được hợp nhất với chức năng liệt kê, chúng tôi có thể xóa bản sao khỏi danh sách python. Về cơ bản trong phương pháp này, các phần tử đã xảy ra sẽ bị bỏ qua và thứ tự cũng được duy trì. Điều này được thực hiện bởi hàm liệt kê

Trong đoạn mã dưới đây, biến n theo dõi chỉ mục của phần tử đang được kiểm tra và sau đó nó có thể được sử dụng để xem liệu phần tử đó đã tồn tại trong danh sách cho đến chỉ mục được chỉ định bởi n chưa. Nếu nó tồn tại, chúng tôi sẽ bỏ qua nó nếu không chúng tôi sẽ thêm nó vào một danh sách mới và điều này cũng được thực hiện bằng cách sử dụng khả năng hiểu danh sách như chúng tôi đã thảo luận ở trên

Mã số

________số 8_______

 

đầu ra

 The list is: [11, 13, 15, 16, 13, 15, 16, 11]

 The list after removing duplicates: [11, 13, 15, 16]

 

Phương pháp 5) Sử dụng bộ sưu tập. Ra lệnhDict. fromkeys()

Đây là phương pháp nhanh nhất để đạt được mục tiêu loại bỏ các bản sao khỏi danh sách python. Phương pháp này trước tiên sẽ loại bỏ các bản sao và trả về một từ điển đã được chuyển đổi thành một danh sách. Ngoài ra, phương pháp này hoạt động tốt trong trường hợp chuỗi

Trong đoạn code dưới đây khi chúng ta sử dụng phương thức fromkeys() nó sẽ tạo ra các khóa của tất cả các phần tử trong danh sách. Nhưng các khóa trong từ điển không thể trùng lặp, do đó, phương thức fromkeys() sẽ tự loại bỏ các giá trị trùng lặp

Mã số

 [6, mark, ['A', 'I']]
0

 

đầu ra

 The list is: [11, 13, 15, 16, 13, 15, 16, 11]

 The list after removing duplicates: [11, 13, 15, 16]

 

Đây là một số phương pháp mà chúng ta có thể xóa bản sao khỏi danh sách python

Phần kết luận

Do đó, trong bài viết này, chúng ta đã tìm hiểu về danh sách python và các phương pháp khác nhau để loại bỏ các phần tử trùng lặp khỏi danh sách trong python. Ngoài ra, chúng tôi đã nghiên cứu ví dụ cùng với đầu ra cho các phương pháp khác nhau

Làm cách nào để xóa các phần tử trùng lặp khỏi danh sách các danh sách trong Python?

Trăn. Xóa các mục trùng lặp khỏi danh sách .
Giải pháp mẫu. -
Mã Python. nhập itertools num = [[10, 20], [40], [30, 56, 25], [10, 20], [33], [40]] print("Original List", num) num. sort() new_num = list(num for num,_ trong itertools. groupby(num)) print("Danh sách mới", new_num).
Trình bày bằng hình ảnh
Sơ đồ

Làm cách nào để tìm sự khác biệt giữa hai danh sách danh sách trong Python?

Có thể tìm thấy sự khác biệt giữa hai danh sách (giả sử list1 và list2) bằng hàm đơn giản sau. Bằng cách sử dụng chức năng trên, sự khác biệt có thể được tìm thấy bằng cách sử dụng diff(temp2, temp1) hoặc diff(temp1, temp2) . Cả hai sẽ cho kết quả ['Four', 'Three'].