Computer >> Máy Tính >  >> Lập trình >> Python

Tìm các phần tử phổ biến trong danh sách các danh sách bằng Python

Có thể có một danh sách mà các phần tử bên trong cũng là danh sách. Trong những trường hợp như vậy, chúng ta có thể bắt gặp nhu cầu khi phải tìm ra các yếu tố chung giữa các danh sách bên trong này. Trong bài viết này, chúng tôi sẽ tìm ra các phương pháp để đạt được điều này.

Với bản đồ và giao lộ

Giao điểm là một khái niệm toán học đơn giản để tìm các phần tử chung giữa các tập hợp khác nhau. Python có phương thức set trả về một tập hợp chứa sự giống nhau giữa hai hoặc nhiều tập hợp. Vì vậy, trước tiên chúng tôi chuyển đổi các phần tử của danh sách thành tập hợp thông qua một hàm bản đồ và sau đó áp dụng phương pháp tập hợp cho tất cả các danh sách được chuyển đổi này.

Ví dụ

listA = [['Mon', 3, 'Tue', 7,'Wed',4],['Thu', 5,'Fri',11,'Tue', 7],['Wed', 9, 'Tue', 7,'Wed',6]]

# Given list
print("Given list of lists : \n",listA)

# Applying intersection
res = list(set.intersection(*map(set, listA)))

# Result
print("The common elements among inners lists : ",res)

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

Given list of lists :
[['Mon', 3, 'Tue', 7, 'Wed', 4], ['Thu', 5, 'Fri', 11, 'Tue', 7], ['Wed', 9, 'Tue', 7, 'Wed', 6]]
The common elements among inners lists : ['Tue', 7]

Với Reduce và lambda

Chúng ta cũng có thể áp dụng hàm giảm trong python. Hàm này được sử dụng để áp dụng một hàm đã cho được truyền vào nó làm đối số cho tất cả các phần tử danh sách được đề cập trong chuỗi được truyền cùng. Hàm lambda tìm ra các phần tử chung bằng cách lặp qua từng danh sách lồng nhau sau khi bộ được áp dụng cho chúng.

Ví dụ

from functools import reduce
listA = [['Mon', 3, 'Tue', 7,'Wed',4],['Thu', 5,'Fri',11,'Tue', 7],['Wed', 9, 'Tue', 7,'Wed',6]]

# Given list
print("Given list of lists : \n",listA)

# Applying reduce
res = list(reduce(lambda i, j: i & j, (set(n) for n in listA)))

# Result
print("The common elements among inners lists : ",res)

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

Given list of lists :
[['Mon', 3, 'Tue', 7, 'Wed', 4], ['Thu', 5, 'Fri', 11, 'Tue', 7], ['Wed', 9, 'Tue', 7, 'Wed', 6]]
The common elements among inners lists : ['Tue', 7]