Sự khác biệt Python giữa hai danh sách

Python cung cấp nhiều cách để so sánh hai danh sách. So sánh là quá trình kiểm tra các mục dữ liệu của một mục dữ liệu khác trong danh sách, xem chúng có giống nhau hay không

Các phương pháp so sánh hai danh sách được đưa ra dưới đây

  • Hàm cmp()
  • Hàm set() và toán tử ==
  • Hàm sort() và toán tử ==
  • Bộ sưu tập. hàm truy cập ()
  • Hàm reduce() và map()

Hàm cmp()

Hàm cmp() của Python so sánh hai đối tượng Python và trả về các giá trị nguyên -1, 0, 1 theo phép so sánh

Lưu ý - Nó không sử dụng trong Python 3. phiên bản x

Hàm set() và toán tử ==

Hàm set() trong Python thao tác danh sách vào tập hợp mà không cần quan tâm đến thứ tự các phần tử. Ngoài ra, chúng ta sử dụng toán tử bằng (==) để so sánh các phần tử dữ liệu của danh sách. Hãy hiểu ví dụ sau

Thí dụ -

đầu ra

The list1 and list2 are equal

Giải trình

Trong ví dụ trên, chúng tôi đã khai báo hai danh sách được so sánh với nhau. Chúng tôi đã chuyển đổi các danh sách đó thành tập hợp và so sánh từng phần tử với sự trợ giúp của toán tử ==. Tất cả các phần tử đều bằng nhau trong cả hai danh sách, sau đó nếu khối được thực thi và in kết quả

Phương thức sort() với toán tử ==

Hàm sort() trong Python dùng để sắp xếp danh sách. Các phần tử của cùng một danh sách có cùng vị trí chỉ mục;

Lưu ý - Trong phương thức sort(), chúng ta có thể chuyển các mục trong danh sách theo bất kỳ thứ tự nào vì chúng ta đang sắp xếp danh sách trước khi so sánh

Hãy hiểu ví dụ sau -

Thí dụ -

đầu ra

The list1 and list3 are not the same
The list1 and list2 are not the same

Bộ sưu tập. hàm truy cập ()

Mô-đun bộ sưu tập cung cấp bộ đếm (), so sánh danh sách một cách hiệu quả. Nó lưu trữ dữ liệu ở định dạng từ điển. và đếm tần suất xuất hiện của các mục trong danh sách

Lưu ý - Thứ tự của các phần tử trong danh sách không quan trọng trong chức năng này

Thí dụ -

đầu ra

The lists list1 and list2 are not the same
The lists list1 and list3 are the same

Giảm () và bản đồ ()

Hàm map() chấp nhận một hàm và đối tượng lặp Python (danh sách, bộ dữ liệu, chuỗi, v.v.) làm đối số và trả về một đối tượng bản đồ. Hàm thực hiện cho từng phần tử của danh sách và kết quả là trả về một trình vòng lặp

Bên cạnh đó, phương thức reduce() triển khai hàm đã cho cho đối tượng có thể lặp lại theo cách đệ quy

Ở đây, chúng ta sẽ sử dụng kết hợp cả hai phương pháp. Hàm map() sẽ triển khai hàm (nó có thể là hàm do người dùng xác định hoặc hàm lambda) cho mọi đối tượng có thể lặp lại và hàm reduce() đảm nhiệm chức năng đó sẽ áp dụng theo cách đệ quy

Trong bài viết này, chúng ta sẽ thảo luận về 10 cách khác nhau để so sánh hai danh sách và nhận ra sự khác biệt của chúng. e. các yếu tố có mặt trong một danh sách nhưng không có trong một danh sách khác

Giả sử chúng ta có hai danh sách,

first_list = [10, 11, 12, 13, 14, 16, 15]
sec_list = [10, 11, 12, 18, 19, 16]

Bây giờ có thể có một số phần tử có trong danh sách đầu tiên nhưng lại bị thiếu trong danh sách thứ hai. Trong khi đó, cũng có một số yếu tố có mặt trong danh sách thứ hai nhưng thiếu trong danh sách đầu tiên. Chúng tôi muốn so sánh hai danh sách của chúng tôi và nhận được tất cả những khác biệt này.
Giống như hai danh sách đã đề cập ở trên, điểm khác biệt là,
______4
Có nhiều cách để so sánh hai danh sách và nhận ra sự khác biệt. Hãy thảo luận từng vấn đề một,

Sử dụng set để nhận sự khác biệt giữa hai danh sách

Khi chúng ta tạo một tập hợp từ danh sách thì nó chỉ chứa các phần tử duy nhất của danh sách. Vì vậy, hãy chuyển đổi danh sách của chúng ta thành các tập hợp và sau đó chúng ta có thể trừ các tập hợp này để có được sự khác biệt giữa chúng. e

# Convert lists to sets
first_set = set(first_list)
sec_set = set(sec_list)

# Get the differences between two sets
differences = (first_set - sec_set).union(sec_set - first_set)

print('Differences between two lists: ')
print(differences)

Đầu ra.
______6
Chúng tôi có sự khác biệt giữa cả hai danh sách tôi. e. các phần tử nằm trong danh sách này nhưng không có trong danh sách khác. Nhưng những gì vừa xảy ra ở đây? .

Làm thế nào nó hoạt động?

quảng cáo

Đầu tiên lấy các phần tử có trong first_list nhưng không có trong sec_list,

# Get elements which are present in first_list but not in sec_list
diff1 = set(first_list) - set(sec_list)

print(diff1)

Đầu ra.
{13, 14, 15}

Sau đó lấy các phần tử có trong sec_list nhưng không có trong first_list,
# Get elements which are present in sec_list but not in first_list
diff2 = set(sec_list) - set(first_list)

print(diff2)

Output:
______10
Bây giờ cộng cả hai tập hợp kết quả để có sự khác biệt hoàn toàn giữa hai danh sách,
The list1 and list3 are not the same
The list1 and list2 are not the same
1
Output:
{18, 19, 13, 14, 15}

Sử dụng bộ. differ() để nhận sự khác biệt giữa hai danh sách

Trong giải pháp trước, thay vì trừ hai tập hợp bằng toán tử –, chúng ta có thể sử dụng hàm differ() của tập hợp để lấy hiệu

Vì vậy, hãy chuyển đổi các danh sách của chúng ta thành các tập hợp và sau đó chúng ta có thể trừ các tập hợp này bằng cách sử dụng hàm differ() để có được sự khác biệt trong hai danh sách i. e

18, 19, 13, 14, 15
0
Đầu ra.
______6

So sánh và nhận sự khác biệt giữa hai danh sách không có bộ

Thay vì chuyển đổi danh sách thành tập hợp và so sánh. Chúng ta có thể lặp lại danh sách đầu tiên và đối với từng phần tử trong danh sách đó, hãy kiểm tra xem danh sách thứ hai có chứa phần tử đó hay không. Nó sẽ cung cấp các phần tử có trong danh sách đầu tiên nhưng bị thiếu trong danh sách thứ hai i. e

18, 19, 13, 14, 15
2
Đầu ra.
______43
Sau đó, sử dụng logic tương tự theo thứ tự ngược lại i. e. lặp lại danh sách thứ hai và đối với từng phần tử trong danh sách đó, hãy kiểm tra xem danh sách đầu tiên có chứa phần tử đó hay không. Nó sẽ cung cấp các phần tử có trong danh sách thứ hai nhưng bị thiếu trong danh sách đầu tiên tôi. e.
____44
Đầu ra.
______45
Bây giờ hãy kết hợp diff1 và diff2 này để có sự khác biệt hoàn toàn giữa hai danh sách,
18, 19, 13, 14, 15
6
Output:
18, 19, 13, 14, 15
7

Sử dụng tính năng Hiểu danh sách để biết sự khác biệt giữa hai danh sách

Giống như giải pháp trước đó, chúng ta có thể lặp lại cả hai danh sách và tìm kiếm các phần tử trong các danh sách khác để nhận được sự khác biệt. Nhưng để lặp lại, chúng tôi sẽ sử dụng khả năng hiểu danh sách

Danh sách ra là,

18, 19, 13, 14, 15
8
Lấy các phần tử có trong danh sách đầu tiên nhưng thiếu trong danh sách thứ hai i. e.
______49
Lấy các phần tử có trong danh sách thứ hai nhưng thiếu trong danh sách thứ nhất i. e.
# Convert lists to sets
first_set = set(first_list)
sec_set = set(sec_list)

# Get the differences between two sets
differences = (first_set - sec_set).union(sec_set - first_set)

print('Differences between two lists: ')
print(differences)
0
Bây giờ hãy kết hợp diff1 và diff2 này để có sự khác biệt hoàn toàn giữa hai danh sách,
18, 19, 13, 14, 15
6
Output:
______47

Sử dụng bộ. symmetric_difference() để nhận sự khác biệt giữa hai danh sách

Trong tất cả các giải pháp trước đó, chúng tôi có tất cả sự khác biệt giữa hai danh sách trong hai bước. Nhưng sử dụng symmetric_difference() chúng ta có thể đạt được điều đó chỉ trong một bước

# Convert lists to sets
first_set = set(first_list)
sec_set = set(sec_list)

# Get the differences between two sets
differences = (first_set - sec_set).union(sec_set - first_set)

print('Differences between two lists: ')
print(differences)
3
symmetric_difference() là một hàm thành viên của tập hợp và chấp nhận một chuỗi khác làm đối số. Nó trả về một tập hợp mới với các phần tử đang gọi đối tượng tập hợp hoặc đối số chuỗi, nhưng không phải trong cả hai. Vì vậy, về cơ bản, nó trả về sự khác biệt giữa cả tập hợp và danh sách. Hãy sử dụng công cụ này để nhận sự khác biệt giữa hai danh sách,
# Convert lists to sets
first_set = set(first_list)
sec_set = set(sec_list)

# Get the differences between two sets
differences = (first_set - sec_set).union(sec_set - first_set)

print('Differences between two lists: ')
print(differences)
4
Đầu ra.
# Convert lists to sets
first_set = set(first_list)
sec_set = set(sec_list)

# Get the differences between two sets
differences = (first_set - sec_set).union(sec_set - first_set)

print('Differences between two lists: ')
print(differences)
5
Chúng tôi đã chuyển đổi danh sách đầu tiên của mình thành một tập hợp, sau đó gọi symmetric_difference() trên đối tượng tập hợp đó và chuyển danh sách thứ hai làm đối số. Nó trả về sự khác biệt giữa chúng.

Sử dụng công đoàn () và giao lộ () để nhận sự khác biệt giữa hai danh sách

Trước hết, chuyển đổi cả hai danh sách thành bộ. Sau đó lấy hợp của cả hai tập hợp,

# Convert lists to sets
first_set = set(first_list)
sec_set = set(sec_list)

# Get the differences between two sets
differences = (first_set - sec_set).union(sec_set - first_set)

print('Differences between two lists: ')
print(differences)
6
Đầu ra.
______57
union() trả về một tập hợp mới với tất cả các phần tử riêng biệt từ cả hai tập hợp.
Sau đó lấy giao của cả hai tập hợp,
# Convert lists to sets
first_set = set(first_list)
sec_set = set(sec_list)

# Get the differences between two sets
differences = (first_set - sec_set).union(sec_set - first_set)

print('Differences between two lists: ')
print(differences)
8
Kết quả.
______59
giao() trả về một tập hợp mới với tất cả các phần tử chung của cả hai tập hợp.

Bây giờ nếu chúng ta trừ tất cả các phần tử chung khỏi tất cả các phần tử riêng biệt thì chúng ta sẽ nhận được sự khác biệt giữa cả hai phần tử đó,

{18, 19, 13, 14, 15}
0
Đầu ra.
______55
Vì vậy, đây là cách chúng tôi có thể nhận được sự khác biệt giữa hai danh sách.

Sử dụng set & ^ để nhận sự khác biệt giữa hai danh sách

Một giải pháp nhanh chóng khác là,

{18, 19, 13, 14, 15}
2
Đầu ra.
______55

sử dụng numpy. setdiff1d() để nhận sự khác biệt giữa hai danh sách

{18, 19, 13, 14, 15}
4
setdiff1d() chấp nhận hai mảng làm đối số và trả về các giá trị duy nhất trong mảng1 không có trong mảng2. Vì vậy, hãy sử dụng điều này để nhận sự khác biệt giữa hai danh sách,
{18, 19, 13, 14, 15}
5
Đầu ra.
{18, 19, 13, 14, 15}
6
Chúng tôi đã chuyển đổi danh sách của mình thành ndarrays và chuyển chúng tới setdiff1d() hai lần i. e.
  • Để lấy các phần tử trong first_list nhưng không có trong sec_list
  • Để lấy các phần tử trong sec_list nhưng không có trong first_list

Sau đó, hợp nhất cả hai sự khác biệt để có được tất cả sự khác biệt giữa hai danh sách

Vì vậy, đây là những cách khác nhau để so sánh hai danh sách trong python và tìm ra sự khác biệt của chúng

Ví dụ đầy đủ như sau,

{18, 19, 13, 14, 15}
7
Đầu ra.
______68

Hướng dẫn về Pandas -Tìm hiểu Phân tích dữ liệu với Python

 
  • Hướng dẫn Pandas Phần #1 - Giới thiệu về Phân tích dữ liệu với Python
  • Hướng dẫn Pandas Phần #2 - Khái niệm cơ bản về Pandas Series
  • Hướng dẫn Pandas Phần #3 - Nhận & Đặt giá trị Chuỗi
  • Pandas Tutorial Part #4 - Thuộc tính & phương thức của Pandas Series
  • Hướng dẫn về Pandas Phần #5 - Thêm hoặc xóa các thành phần của Pandas Series
  • Hướng dẫn về Pandas Phần #6 - Giới thiệu về DataFrame
  • Hướng dẫn về Pandas Phần #7 - DataFrame. loc[] - Chọn Hàng/Cột theo Lập chỉ mục
  • Hướng dẫn về Pandas Phần #8 - DataFrame. iloc[] - Chọn Hàng/Cột theo Tên Nhãn
  • Hướng dẫn về gấu trúc Phần #9 - Lọc các hàng trong khung dữ liệu
  • Hướng dẫn Pandas Phần #10 - Thêm/Xóa Hàng & Cột DataFrame
  • Hướng dẫn về Pandas Phần #11 - Các thuộc tính & phương thức DataFrame
  • Hướng dẫn Pandas Phần #12 - Xử lý dữ liệu bị thiếu hoặc giá trị NaN
  • Hướng dẫn về Pandas Phần #13 - Lặp lại các Hàng & Cột của DataFrame
  • Hướng dẫn Pandas Phần #14 - Sắp xếp DataFrame theo Hàng hoặc Cột
  • Hướng dẫn về gấu trúc Phần #15 - Hợp nhất hoặc ghép các khung dữ liệu
  • Hướng dẫn về Pandas Phần #16 - DataFrame GroupBy được giải thích bằng các ví dụ
 

Bạn đang muốn tạo dựng sự nghiệp trong Khoa học dữ liệu với Python?

Khoa học dữ liệu là tương lai và tương lai là ở đây ngay bây giờ. Các nhà khoa học dữ liệu hiện là những chuyên gia được tìm kiếm nhiều nhất hiện nay. Để trở thành một Nhà khoa học dữ liệu giỏi hoặc để chuyển đổi nghề nghiệp trong Khoa học dữ liệu, người ta phải sở hữu bộ kỹ năng phù hợp. Chúng tôi đã tuyển chọn danh sách Chứng chỉ chuyên nghiệp tốt nhất về Khoa học dữ liệu với Python. Các khóa học này sẽ dạy cho bạn các công cụ lập trình cho Khoa học dữ liệu như Pandas, NumPy, Matplotlib, Seaborn và cách sử dụng các thư viện này để triển khai các mô hình Máy học

Kiểm tra Đánh giá chi tiết về Chứng chỉ chuyên nghiệp tốt nhất về Khoa học dữ liệu với Python

Hãy nhớ rằng, Khoa học dữ liệu đòi hỏi rất nhiều kiên nhẫn, bền bỉ và thực hành. Vì vậy, hãy bắt đầu học ngay hôm nay

Làm cách nào để so sánh 2 danh sách trong Python?

Chúng ta có thể kết hợp phương thức sort() của Python với toán tử == để so sánh hai danh sách. Phương thức sort() trong Python được sử dụng để sắp xếp danh sách đầu vào với mục đích nếu hai danh sách đầu vào bằng nhau thì các phần tử sẽ nằm ở cùng vị trí chỉ mục.

Bạn có thể trừ hai danh sách bằng Python không?

Sử dụng Numpy để trừ hai danh sách Python . Phương thức này lấy hai mảng numpy làm đầu vào và cung cấp các phép trừ theo từng phần tử giữa hai danh sách.

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

Phương pháp 1. Sử dụng “in” để tìm sự khác biệt giữa hai danh sách trong Python . Trong ví dụ này, chúng tôi đang sử dụng vòng lặp và Python trong từ khóa để tìm sự khác biệt giữa hai danh sách trong Python.