Trong Python, danh sách là vùng chứa quan trọng vì chúng lưu trữ tất cả các loại kiểu dữ liệu dưới dạng tập hợp. Nó có thể chứa tới 536.870.912 mục trong hệ thống 32 bit. Đôi khi rất khó để biết liệu danh sách có chứa một mục cụ thể hay không. Python có nhiều cách khác nhau để chúng ta có thể tìm hiểu xem danh sách có chứa mục đó không
Mục lục
- Danh sách chứa Python - Giới thiệu
- Kiểm tra xem danh sách Python có chứa phần tử hay không bằng toán tử in
- Sử dụng vòng lặp for để kiểm tra xem danh sách có chứa phần tử trong Python không
- Sử dụng any[] để kiểm tra xem danh sách có chứa phần tử không
- Count[] để kiểm tra xem danh sách có chứa phần tử không
- Bớt tư tưởng
Danh sách Python chứa - Giới thiệu
Kiểm tra xem một phần tử có trong danh sách hay không là một trong những thao tác danh sách cơ bản trong Python và có nhiều cách khác nhau để chúng ta có thể kiểm tra điều đó. Trong hướng dẫn này, chúng tôi sẽ đề cập đến một số cách để kiểm tra xem danh sách có chứa phần tử hay không
Kiểm tra xem danh sách Python có chứa phần tử hay không bằng toán tử in
Cách thuận tiện nhất để kiểm tra xem danh sách có chứa phần tử hay không là sử dụng toán tử in. Không sắp xếp danh sách theo bất kỳ thứ tự cụ thể nào, nó trả về TRUE nếu phần tử ở đó, nếu không thì FALSE
Ví dụ dưới đây cho thấy cách thực hiện điều này bằng cách sử dụng 'in' trong câu lệnh if-else
Đầu vào
list = [Adam, Dean, Harvey, Mick, John]
if 'John' in list:
print [" 'John' is found in the list"]
else
print [" 'John' is not found in the list"]
if 'Ned' in list:
print [" 'Ned' is found in the list"]
else
print [" 'Ned' is not found in the list"]
đầu ra
'John' is found in the list
'Ned' is not found in the list
Sử dụng vòng lặp for để kiểm tra xem danh sách có chứa phần tử trong Python không
Một phương pháp đơn giản khác để kiểm tra xem danh sách có chứa phần tử đang lặp qua nó không. Đúng như tên gọi, vòng lặp sẽ khớp từng phần tử của danh sách với phần tử mà chúng ta đang tìm kiếm từng cái một và sẽ chỉ dừng lại nếu có sự trùng khớp hoặc không có sự trùng khớp nào cả. Ví dụ dưới đây minh họa điều này
Đầu vào
list = [Adam, Dean, Harvey, Mick, John]
for name in list:
if name == 'Adam':
print ["Found the element"]
đầu ra
Found the element
Sử dụng any[] để kiểm tra xem danh sách có chứa
Hàm any[] là một phương pháp tích hợp sẵn để kiểm tra sự trùng khớp trong một chuỗi với sự trùng khớp của từng thành phần danh sách
Ví dụ dưới đây cho thấy cách thức hoạt động của hàm any[]. Chúng tôi kiểm tra xem có bất kỳ mục phổ biến nào trong chuỗi không, 'Adam sống ở New York' và danh sách được đề cập trong dòng đầu tiên
Đầu vào
list = [Adam, Dean, Harvey, Mick, John]
string = "Adam lives in New York"
print ["The original list is: " + str[list]]
print ["The original string is: " + string]
result = any[item in string for item in list]
print ["Does the string contain 'Adam': " + str[result]]
đầu ra
The original list is: [Adam, Dean, Harvey, Mick, John]
The original string is: Adam lives in New York
Does the string contain 'Adam': True
count[] để kiểm tra xem danh sách có chứa
Một phương thức tích hợp khác trong Python, count[] trả về số lần phần tử được truyền xuất hiện trong danh sách. Nếu phần tử không có trong danh sách thì hàm đếm[] sẽ trả về 0. Nếu nó trả về số nguyên dương lớn hơn 0 nghĩa là danh sách chứa phần tử
Đầu vào
list = [Adam, Dean, Harvey, Mick, John]
result = list.count[Harvey]
if result > 0:
print["Harvey exists in the list"]
else:
print["Harvey does not exist in the list"]
đầu ra
Harvey exists in the list
Bớt tư tưởng
Trong hướng dẫn này, chúng ta đã sử dụng các phương thức , vòng lặp for, any[] và count[] để kiểm tra xem một mục cụ thể có tồn tại trong danh sách hay không. Mọi người có thể tìm hiểu thêm các khái niệm khác liên quan đến Python tại đây
Sẽ có lúc trong cuộc đời lập trình của chúng ta khi chúng ta cần so sánh các danh sách để hiểu liệu các mục trong một danh sách có xuất hiện trong danh sách thứ hai hay không
Cách kiểm tra xem các mục trong danh sách Python có nằm trong danh sách khác không
any[] vàall[]
trước khi xem xét cách sử dụng thông minh các phương thức có trong kiểu dữ liệu # Main list lst_a = [24, 17, 37, 16, 27, 13, 46, 40, 46, 51, 44, 29, 54, 77, 78, 73, 40, 58, 32, 48, 45, 55, 51, 59, 68, 34, 83, 65, 57, 50, 57, 93, 62, 37, 70, 62 ] # SOME items are in lst_a lst_c = [93, 108, 15, 42, 27, 83] print[list[filter[lambda i: i in lst_a, lst_c]]] # Result # [93, 27, 83]0
Đến cuối bài viết này, bạn sẽ tạo mã không chỉ đáp ứng nhu cầu của mình mà còn duy trì khả năng đọc trong khi ngắn gọn, nhanh chóng và trang nhã theo phong cách Pythonic
Chúng tôi cũng sẽ đi xa hơn một chút so với việc kiểm tra xem các mục trong danh sách này có xuất hiện trong danh sách khác hay không, chúng tôi cũng sẽ tìm ra một phương pháp dễ dàng để trả lại các mục trùng lặp đó [hoặc như một phần thưởng, trả lại các mục không trùng lặp của danh sách] cho
Phương pháp 1. Danh sách hiểu
Vì vậy, nếu chúng ta bắt đầu viết mã Python, chúng ta sẽ sử dụng vòng lặp for để lặp qua hai danh sách và trả về kết quả. Trong các ví dụ sau, trước tiên chúng tôi trả về True/False nếu một số trong Danh sách C cũng có trong Danh sách A. Sau đó, chúng tôi trả về các số thực từ Danh sách C trong Danh sách A
# Main list lst_a = [24, 17, 37, 16, 27, 13, 46, 40, 46, 51, 44, 29, 54, 77, 78, 73, 40, 58, 32, 48, 45, 55, 51, 59, 68, 34, 83, 65, 57, 50, 57, 93, 62, 37, 70, 62 ] # SOME items are in lst_a lst_c = [93, 108, 15, 42, 27, 83] # Empty list lst_result = [] # Check True or False items are in both lists for i in lst_c: for j in lst_a: if i == j: print[True, end=' '] else: continue print['\n'] # Return values that are in both lists for i in lst_c: for j in lst_a: if i == j: lst_result.append[i] else: continue print[lst_result] # Result # True True True [93, 27, 83]
Vì vậy, điều đó vẫn ổn trong chừng mực nó diễn ra; . Tuy nhiên, phải mất sáu dòng mã cho truy vấn Đúng/Sai và sáu dòng mã khác cộng với việc tạo một danh sách mới để xác định các số thực chung cho cả hai danh sách. Sử dụng khả năng hiểu danh sách, chúng tôi có thể cải thiện điều đó
Phương pháp 2. Lambda
Nếu bạn đọc bài đăng trên blog của tôi về việc sử dụng các biểu thức lambda và bạn đã yêu thích chúng như tôi đã từng yêu, thì chúng ta có thể sử dụng lambda cho mục đích này
________số 8_______Tuy nhiên, trong bài đăng của tôi về các biểu thức lambda, tôi đã nói rằng đôi khi chúng có thể khiến mã khó đọc và khi nhìn vào đoạn mã trên, tôi rất đau lòng khi phải thừa nhận điều đó, tôi không tin rằng biểu thức lambda là cần thiết trong việc này . Cú pháp không chính xác khiến bạn phải thốt lên khi đọc, vì vậy, hãy xem xét một số cách hiểu danh sách một lớp dễ hiểu trả về cùng thông tin như các phương pháp trước đó nhưng chúng ngắn gọn hơn và dễ đọc hơn. Họ đây rồi
# Main list lst_a = [24, 17, 37, 16, 27, 13, 46, 40, 46, 51, 44, 29, 54, 77, 78, 73, 40, 58, 32, 48, 45, 55, 51, 59, 68, 34, 83, 65, 57, 50, 57, 93, 62, 37, 70, 62 ] # SOME items are in lst_a lst_c = [93, 108, 15, 42, 27, 83] print[[True for i in lst_a if i in lst_c], '\n'] print[[i for i in lst_a if i in lst_c]] # Result # [True, True, True] [27, 83, 93]
Vì vậy, chúng tôi đã đạt đến một nơi hạ cánh gọn gàng để hiểu danh sách với mã ngắn, dễ đọc nhưng bây giờ chúng tôi nên đưa một biến khác vào suy nghĩ của mình, đó là tốc độ thực thi. Tuy nhiên, trên các danh sách nhỏ chẳng hạn như danh sách chúng tôi đã sử dụng ở đây, bất kỳ hình phạt tốc độ nào đối với các lựa chọn chức năng khác nhau đều không đáng kể, tuy nhiên, hãy cẩn thận rằng trên một danh sách lớn, phương pháp hiểu danh sách này không đi kèm với hình phạt tốc độ. Nó sẽ trả tiền để kiểm tra với một bộ đếm thời gian trong một bài kiểm tra
Phương pháp 3. Hàm tích hợp any[] và all[] của Python
Để tránh viết mã dài dòng, Python có một loạt các hàm tích hợp đáp ứng nhu cầu của chúng tôi để hiểu liệu các mục trong danh sách này có trong danh sách khác hay không
Hàm any[]
kiểm tra xem có bất kỳ mục nào trong danh sách là
# Main list lst_a = [24, 17, 37, 16, 27, 13, 46, 40, 46, 51, 44, 29, 54, 77, 78, 73, 40, 58, 32, 48, 45, 55, 51, 59, 68, 34, 83, 65, 57, 50, 57, 93, 62, 37, 70, 62 ] # SOME items are in lst_a lst_c = [93, 108, 15, 42, 27, 83] print[list[filter[lambda i: i in lst_a, lst_c]]] # Result # [93, 27, 83]2 hay không và trả về một giá trị tương ứng là
# Main list lst_a = [24, 17, 37, 16, 27, 13, 46, 40, 46, 51, 44, 29, 54, 77, 78, 73, 40, 58, 32, 48, 45, 55, 51, 59, 68, 34, 83, 65, 57, 50, 57, 93, 62, 37, 70, 62 ] # SOME items are in lst_a lst_c = [93, 108, 15, 42, 27, 83] print[list[filter[lambda i: i in lst_a, lst_c]]] # Result # [93, 27, 83]2. Đây là một ví dụ đơn giản về cách nó hoạt động
a = [True, False, True, False, True] print[any[a]] # Result # True
Điều đó thật đơn giản, vì vậy hãy áp dụng nó vào danh sách các ví dụ của chúng tôi. Tôi đã chụp màn hình lại tất cả các danh sách để giúp bạn không phải cuộn. Vì vậy, nếu chúng tôi muốn một câu trả lời Đúng/Sai đơn giản cho câu hỏi của chúng tôi về việc liệu có bất kỳ mục nào trong danh sách này nằm trong danh sách khác hay không, thì
# Main list lst_a = [24, 17, 37, 16, 27, 13, 46, 40, 46, 51, 44, 29, 54, 77, 78, 73, 40, 58, 32, 48, 45, 55, 51, 59, 68, 34, 83, 65, 57, 50, 57, 93, 62, 37, 70, 62 ] # SOME items are in lst_a lst_c = [93, 108, 15, 42, 27, 83] print[list[filter[lambda i: i in lst_a, lst_c]]] # Result # [93, 27, 83]4 phù hợp với nhu cầu của chúng tôi một cách đáng ngưỡng mộ
print[any[x in lst_a for x in lst_b]] print[any[x in lst_a for x in lst_c]] print[any[x in lst_a for x in lst_d]] # Result # True True False
Hãy nhớ rằng tất cả các mục
# Main list lst_a = [24, 17, 37, 16, 27, 13, 46, 40, 46, 51, 44, 29, 54, 77, 78, 73, 40, 58, 32, 48, 45, 55, 51, 59, 68, 34, 83, 65, 57, 50, 57, 93, 62, 37, 70, 62 ] # SOME items are in lst_a lst_c = [93, 108, 15, 42, 27, 83] print[list[filter[lambda i: i in lst_a, lst_c]]] # Result # [93, 27, 83]5 đều nằm trong
# Main list lst_a = [24, 17, 37, 16, 27, 13, 46, 40, 46, 51, 44, 29, 54, 77, 78, 73, 40, 58, 32, 48, 45, 55, 51, 59, 68, 34, 83, 65, 57, 50, 57, 93, 62, 37, 70, 62 ] # SOME items are in lst_a lst_c = [93, 108, 15, 42, 27, 83] print[list[filter[lambda i: i in lst_a, lst_c]]] # Result # [93, 27, 83]6; . Do đó, sự trở lại của
# Main list lst_a = [24, 17, 37, 16, 27, 13, 46, 40, 46, 51, 44, 29, 54, 77, 78, 73, 40, 58, 32, 48, 45, 55, 51, 59, 68, 34, 83, 65, 57, 50, 57, 93, 62, 37, 70, 62 ] # SOME items are in lst_a lst_c = [93, 108, 15, 42, 27, 83] print[list[filter[lambda i: i in lst_a, lst_c]]] # Result # [93, 27, 83]2,
# Main list lst_a = [24, 17, 37, 16, 27, 13, 46, 40, 46, 51, 44, 29, 54, 77, 78, 73, 40, 58, 32, 48, 45, 55, 51, 59, 68, 34, 83, 65, 57, 50, 57, 93, 62, 37, 70, 62 ] # SOME items are in lst_a lst_c = [93, 108, 15, 42, 27, 83] print[list[filter[lambda i: i in lst_a, lst_c]]] # Result # [93, 27, 83]2,
# Main list lst_a = [24, 17, 37, 16, 27, 13, 46, 40, 46, 51, 44, 29, 54, 77, 78, 73, 40, 58, 32, 48, 45, 55, 51, 59, 68, 34, 83, 65, 57, 50, 57, 93, 62, 37, 70, 62 ] # SOME items are in lst_a lst_c = [93, 108, 15, 42, 27, 83] print[[True for i in lst_a if i in lst_c], '\n'] print[[i for i in lst_a if i in lst_c]] # Result # [True, True, True] [27, 83, 93]3 có ý nghĩa vì chỉ có danh sách thứ ba,
# Main list lst_a = [24, 17, 37, 16, 27, 13, 46, 40, 46, 51, 44, 29, 54, 77, 78, 73, 40, 58, 32, 48, 45, 55, 51, 59, 68, 34, 83, 65, 57, 50, 57, 93, 62, 37, 70, 62 ] # SOME items are in lst_a lst_c = [93, 108, 15, 42, 27, 83] print[list[filter[lambda i: i in lst_a, lst_c]]] # Result # [93, 27, 83]9, không có bất kỳ mục nào trùng lặp trong lst_a
Vấn đề với phương pháp này là nó không cho bạn biết liệu tất cả các mục trong danh sách này có nằm trong danh sách khác hay không, chỉ biết rằng một số mục nằm trong danh sách đó. Nếu bạn cần mức độ chính xác đó, chức năng tích hợp sẵn all[]
có thể làm điều này cho bạn
# Main list lst_a = [24, 17, 37, 16, 27, 13, 46, 40, 46, 51, 44, 29, 54, 77, 78, 73, 40, 58, 32, 48, 45, 55, 51, 59, 68, 34, 83, 65, 57, 50, 57, 93, 62, 37, 70, 62 ] # ALL items are in lst_a lst_b = [59, 37, 32, 40] # SOME items are in lst_a lst_c = [93, 108, 15, 42, 27, 83] # NO items are in lst_a lst_d = [23, 101, 63, 35] print[all[x in lst_a for x in lst_b]] print[all[x in lst_a for x in lst_c]] print[all[x in lst_a for x in lst_d]] # Result # True False False
Vì vậy, trong trường hợp này, danh sách duy nhất có tất cả các mục nằm trong
# Main list lst_a = [24, 17, 37, 16, 27, 13, 46, 40, 46, 51, 44, 29, 54, 77, 78, 73, 40, 58, 32, 48, 45, 55, 51, 59, 68, 34, 83, 65, 57, 50, 57, 93, 62, 37, 70, 62 ] # SOME items are in lst_a lst_c = [93, 108, 15, 42, 27, 83] print[list[filter[lambda i: i in lst_a, lst_c]]] # Result # [93, 27, 83]6 là
# Main list lst_a = [24, 17, 37, 16, 27, 13, 46, 40, 46, 51, 44, 29, 54, 77, 78, 73, 40, 58, 32, 48, 45, 55, 51, 59, 68, 34, 83, 65, 57, 50, 57, 93, 62, 37, 70, 62 ] # SOME items are in lst_a lst_c = [93, 108, 15, 42, 27, 83] print[list[filter[lambda i: i in lst_a, lst_c]]] # Result # [93, 27, 83]5, do đó là
# Main list lst_a = [24, 17, 37, 16, 27, 13, 46, 40, 46, 51, 44, 29, 54, 77, 78, 73, 40, 58, 32, 48, 45, 55, 51, 59, 68, 34, 83, 65, 57, 50, 57, 93, 62, 37, 70, 62 ] # SOME items are in lst_a lst_c = [93, 108, 15, 42, 27, 83] print[list[filter[lambda i: i in lst_a, lst_c]]] # Result # [93, 27, 83]2
Hai chức năng này
# Main list lst_a = [24, 17, 37, 16, 27, 13, 46, 40, 46, 51, 44, 29, 54, 77, 78, 73, 40, 58, 32, 48, 45, 55, 51, 59, 68, 34, 83, 65, 57, 50, 57, 93, 62, 37, 70, 62 ] # SOME items are in lst_a lst_c = [93, 108, 15, 42, 27, 83] print[list[filter[lambda i: i in lst_a, lst_c]]] # Result # [93, 27, 83]4 và
a = [True, False, True, False, True] print[any[a]] # Result # True0 rất hữu ích, cung cấp mã dễ đọc và ngắn gọn, nhưng trong phần hiểu danh sách cơ bản được thực hiện trước đây, chúng tôi cũng có thể liệt kê các mục trùng lặp thực tế. Mặc dù bạn có thể làm điều đó bằng cách sử dụng
# Main list lst_a = [24, 17, 37, 16, 27, 13, 46, 40, 46, 51, 44, 29, 54, 77, 78, 73, 40, 58, 32, 48, 45, 55, 51, 59, 68, 34, 83, 65, 57, 50, 57, 93, 62, 37, 70, 62 ] # SOME items are in lst_a lst_c = [93, 108, 15, 42, 27, 83] print[list[filter[lambda i: i in lst_a, lst_c]]] # Result # [93, 27, 83]4 và
a = [True, False, True, False, True] print[any[a]] # Result # True0 nhưng mã bổ sung để làm cho nó hoạt động đặt ra câu hỏi tại sao bạn lại bận tâm, vậy hãy để hai mã đó quay lại chỉ với
# Main list lst_a = [24, 17, 37, 16, 27, 13, 46, 40, 46, 51, 44, 29, 54, 77, 78, 73, 40, 58, 32, 48, 45, 55, 51, 59, 68, 34, 83, 65, 57, 50, 57, 93, 62, 37, 70, 62 ] # SOME items are in lst_a lst_c = [93, 108, 15, 42, 27, 83] print[list[filter[lambda i: i in lst_a, lst_c]]] # Result # [93, 27, 83]2 hoặc
# Main list lst_a = [24, 17, 37, 16, 27, 13, 46, 40, 46, 51, 44, 29, 54, 77, 78, 73, 40, 58, 32, 48, 45, 55, 51, 59, 68, 34, 83, 65, 57, 50, 57, 93, 62, 37, 70, 62 ] # SOME items are in lst_a lst_c = [93, 108, 15, 42, 27, 83] print[[True for i in lst_a if i in lst_c], '\n'] print[[i for i in lst_a if i in lst_c]] # Result # [True, True, True] [27, 83, 93]3 và chuyển sự chú ý của chúng ta sang một số cách tiếp cận khác
Phương pháp 4. Giới thiệu kiểu dữ liệu set[] và phương thức
Giờ đây, việc đưa vào một kiểu dữ liệu mới khi chúng ta làm việc với các danh sách có vẻ lạ và hơi tùy tiện nhưng phương pháp mà tôi sắp trình bày là một cách hay để trả lời câu hỏi của chúng ta về việc liệu các mục trong danh sách này có nằm trong danh sách khác hay không và
Đối với những người không làm nhiều với các tập hợp, chúng là một trong bốn kiểu dữ liệu tích hợp sẵn của Python. Chúng là một tập hợp dữ liệu không có thứ tự và không được lập chỉ mục, đồng thời chúng có một số phương pháp rất thông minh mà chúng ta có thể sử dụng. Có 17 phương pháp để sử dụng trên các bộ và trước tiên tôi sẽ giới thiệu cho bạn hai trong số những phương pháp mà tôi cảm thấy phù hợp nhất với ứng dụng này. Cái đầu tiên cung cấp cho chúng tôi nhiều thứ giống như chúng tôi đã thực hiện bằng cách sử dụng
# Main list lst_a = [24, 17, 37, 16, 27, 13, 46, 40, 46, 51, 44, 29, 54, 77, 78, 73, 40, 58, 32, 48, 45, 55, 51, 59, 68, 34, 83, 65, 57, 50, 57, 93, 62, 37, 70, 62 ] # SOME items are in lst_a lst_c = [93, 108, 15, 42, 27, 83] print[list[filter[lambda i: i in lst_a, lst_c]]] # Result # [93, 27, 83]4 và
a = [True, False, True, False, True] print[any[a]] # Result # True0 , trong khi cái thứ hai cung cấp một cách tao nhã để trả lại các mục chung cho hai danh sách
•
a = [True, False, True, False, True] print[any[a]] # Result # True7 – trả về việc một bộ khác có chứa bộ này hay không
•
a = [True, False, True, False, True] print[any[a]] # Result # True8 – trả về một tập hợp, đó là giao của hai tập hợp khác
Và đây là mã sử dụng cả hai phương pháp trên mỗi so sánh ba danh sách của chúng tôi
# Main list lst_a = [24, 17, 37, 16, 27, 13, 46, 40, 46, 51, 44, 29, 54, 77, 78, 73, 40, 58, 32, 48, 45, 55, 51, 59, 68, 34, 83, 65, 57, 50, 57, 93, 62, 37, 70, 62 ] # ALL items are in lst_a lst_b = [59, 37, 32, 40] # SOME items are in lst_a lst_c = [93, 108, 15, 42, 27, 83] # NO items are in lst_a lst_d = [23, 101, 63, 35] print[set[lst_b].issubset[lst_a]] print[set[lst_c].issubset[lst_a]] print[set[lst_d].issubset[lst_a], '\n'] print[list[set[lst_a].intersection[set[lst_b]]]] print[list[set[lst_a].intersection[set[lst_c]]]] print[list[set[lst_a].intersection[set[lst_d]]]] # Result # True False False [32, 40, 59, 37] [27, 83, 93] []
Lưu ý rằng trong cả hai trường hợp, chúng tôi cần chuyển đổi các danh sách thành các bộ bằng cách sử dụng cú pháp
a = [True, False, True, False, True] print[any[a]] # Result # True9,
print[any[x in lst_a for x in lst_b]] print[any[x in lst_a for x in lst_c]] print[any[x in lst_a for x in lst_d]] # Result # True True False0 được hiển thị, trước khi cho phép phương thức giao nhau thực hiện công việc của nó. Nếu bạn muốn phản hồi được trả về dưới dạng danh sách thì bạn cần chuyển đổi phản hồi bằng cách sử dụng lệnh
print[any[x in lst_a for x in lst_b]] print[any[x in lst_a for x in lst_c]] print[any[x in lst_a for x in lst_d]] # Result # True True False1 như hình minh họa. Nếu điều đó không quan trọng với bạn, bạn sẽ tiết kiệm được một chút mã và trả về một bộ
Phương pháp 5-7. Ba phương pháp thưởng
Mặc dù hơi khác so với câu hỏi ban đầu của chúng ta về việc liệu các mục trong danh sách này có nằm trong danh sách khác hay không, có ba phương pháp khác trong set[] có thể phù hợp với nhu cầu của bạn trong việc so sánh danh sách mặc dù câu trả lời mà chúng trả về tiếp cận vấn đề từ một góc độ khác. đó là
•
print[any[x in lst_a for x in lst_b]] print[any[x in lst_a for x in lst_c]] print[any[x in lst_a for x in lst_d]] # Result # True True False2 – trả về một tập hợp chứa chênh lệch giữa hai hoặc nhiều tập hợp
•
print[any[x in lst_a for x in lst_b]] print[any[x in lst_a for x in lst_c]] print[any[x in lst_a for x in lst_d]] # Result # True True False3 – trả về xem hai tập hợp có giao nhau hay không
•
print[any[x in lst_a for x in lst_b]] print[any[x in lst_a for x in lst_c]] print[any[x in lst_a for x in lst_d]] # Result # True True False4 – trả về việc một bộ có chứa một bộ khác hay không
Như bạn có thể biết từ các mô tả, chúng thực sự là nghịch đảo của những gì chúng ta đã làm trước đây với
print[any[x in lst_a for x in lst_b]] print[any[x in lst_a for x in lst_c]] print[any[x in lst_a for x in lst_d]] # Result # True True False5 và
print[any[x in lst_a for x in lst_b]] print[any[x in lst_a for x in lst_c]] print[any[x in lst_a for x in lst_d]] # Result # True True False6
Sử dụng các ví dụ mã của chúng tôi,
print[any[x in lst_a for x in lst_b]] print[any[x in lst_a for x in lst_c]] print[any[x in lst_a for x in lst_d]] # Result # True True False7 sẽ trả về các số trong
# Main list lst_a = [24, 17, 37, 16, 27, 13, 46, 40, 46, 51, 44, 29, 54, 77, 78, 73, 40, 58, 32, 48, 45, 55, 51, 59, 68, 34, 83, 65, 57, 50, 57, 93, 62, 37, 70, 62 ] # SOME items are in lst_a lst_c = [93, 108, 15, 42, 27, 83] print[list[filter[lambda i: i in lst_a, lst_c]]] # Result # [93, 27, 83]6 không có trong
# Main list lst_a = [24, 17, 37, 16, 27, 13, 46, 40, 46, 51, 44, 29, 54, 77, 78, 73, 40, 58, 32, 48, 45, 55, 51, 59, 68, 34, 83, 65, 57, 50, 57, 93, 62, 37, 70, 62 ] # SOME items are in lst_a lst_c = [93, 108, 15, 42, 27, 83] print[list[filter[lambda i: i in lst_a, lst_c]]] # Result # [93, 27, 83]5,
# Main list lst_a = [24, 17, 37, 16, 27, 13, 46, 40, 46, 51, 44, 29, 54, 77, 78, 73, 40, 58, 32, 48, 45, 55, 51, 59, 68, 34, 83, 65, 57, 50, 57, 93, 62, 37, 70, 62 ] # ALL items are in lst_a lst_b = [59, 37, 32, 40] # SOME items are in lst_a lst_c = [93, 108, 15, 42, 27, 83] # NO items are in lst_a lst_d = [23, 101, 63, 35] print[all[x in lst_a for x in lst_b]] print[all[x in lst_a for x in lst_c]] print[all[x in lst_a for x in lst_d]] # Result # True False False0 hoặc
# Main list lst_a = [24, 17, 37, 16, 27, 13, 46, 40, 46, 51, 44, 29, 54, 77, 78, 73, 40, 58, 32, 48, 45, 55, 51, 59, 68, 34, 83, 65, 57, 50, 57, 93, 62, 37, 70, 62 ] # ALL items are in lst_a lst_b = [59, 37, 32, 40] # SOME items are in lst_a lst_c = [93, 108, 15, 42, 27, 83] # NO items are in lst_a lst_d = [23, 101, 63, 35] print[all[x in lst_a for x in lst_b]] print[all[x in lst_a for x in lst_c]] print[all[x in lst_a for x in lst_d]] # Result # True False False1 trong khi
# Main list lst_a = [24, 17, 37, 16, 27, 13, 46, 40, 46, 51, 44, 29, 54, 77, 78, 73, 40, 58, 32, 48, 45, 55, 51, 59, 68, 34, 83, 65, 57, 50, 57, 93, 62, 37, 70, 62 ] # ALL items are in lst_a lst_b = [59, 37, 32, 40] # SOME items are in lst_a lst_c = [93, 108, 15, 42, 27, 83] # NO items are in lst_a lst_d = [23, 101, 63, 35] print[all[x in lst_a for x in lst_b]] print[all[x in lst_a for x in lst_c]] print[all[x in lst_a for x in lst_d]] # Result # True False False2 sẽ trả về
# Main list lst_a = [24, 17, 37, 16, 27, 13, 46, 40, 46, 51, 44, 29, 54, 77, 78, 73, 40, 58, 32, 48, 45, 55, 51, 59, 68, 34, 83, 65, 57, 50, 57, 93, 62, 37, 70, 62 ] # SOME items are in lst_a lst_c = [93, 108, 15, 42, 27, 83] print[[True for i in lst_a if i in lst_c], '\n'] print[[i for i in lst_a if i in lst_c]] # Result # [True, True, True] [27, 83, 93]3 nếu có giao lộ và
# Main list lst_a = [24, 17, 37, 16, 27, 13, 46, 40, 46, 51, 44, 29, 54, 77, 78, 73, 40, 58, 32, 48, 45, 55, 51, 59, 68, 34, 83, 65, 57, 50, 57, 93, 62, 37, 70, 62 ] # SOME items are in lst_a lst_c = [93, 108, 15, 42, 27, 83] print[list[filter[lambda i: i in lst_a, lst_c]]] # Result # [93, 27, 83]2 nếu không có [điều này có vẻ hơi phản trực giác cho đến khi bạn suy nghĩ về tên
Đây là một ví dụ về ba phương pháp được sử dụng trong danh sách của chúng tôi
# Main List lst_a = [24, 17, 37, 16, 27, 13, 46, 40, 46, 51, 44, 29, 54, 77, 78, 73, 40, 58, 32, 48, 45, 55, 51, 59, 68, 34, 83, 65, 57, 50, 57, 93, 62, 37, 70, 62 ] # ALL items are in lst_a lst_b = [59, 37, 32, 40] # SOME items are in lst_a lst_c = [93, 108, 15, 42, 27, 83] # NO items are in lst_a lst_d = [23, 101, 63, 35] print[set[lst_a].isdisjoint[lst_b]] print[set[lst_a].isdisjoint[lst_c]] print[set[lst_a].isdisjoint[lst_d], '\n'] print[list[set[lst_a].difference[set[lst_b]]]] print[list[set[lst_a].difference[set[lst_c]]]] print[list[set[lst_a].difference[set[lst_d]]], '\n'] print[set[lst_a].issuperset[set[lst_b]]] print[set[lst_a].issuperset[set[lst_c]]] print[set[lst_a].issuperset[set[lst_d]]] # Result # False False True [65, 68, 70, 73, 13, 77, 78, 16, 17, 83, 24, 27, 29, 93, 34, 44, 45, 46, 48, 50, 51, 54, 55, 57, 58, 62] [65, 68, 70, 73, 13, 77, 78, 16, 17, 24, 29, 32, 34, 37, 40, 44, 45, 46, 48, 50, 51, 54, 55, 57, 58, 59, 62] [65, 68, 70, 73, 13, 77, 78, 16, 17, 83, 24, 27, 29, 93, 32, 34, 37, 40, 44, 45, 46, 48, 50, 51, 54, 55, 57, 58, 59, 62] True False False
Có nguy cơ mất điểm, hãy nhớ rằng
# Main list lst_a = [24, 17, 37, 16, 27, 13, 46, 40, 46, 51, 44, 29, 54, 77, 78, 73, 40, 58, 32, 48, 45, 55, 51, 59, 68, 34, 83, 65, 57, 50, 57, 93, 62, 37, 70, 62 ] # ALL items are in lst_a lst_b = [59, 37, 32, 40] # SOME items are in lst_a lst_c = [93, 108, 15, 42, 27, 83] # NO items are in lst_a lst_d = [23, 101, 63, 35] print[all[x in lst_a for x in lst_b]] print[all[x in lst_a for x in lst_c]] print[all[x in lst_a for x in lst_d]] # Result # True False False2 sẽ trả lại
# Main list lst_a = [24, 17, 37, 16, 27, 13, 46, 40, 46, 51, 44, 29, 54, 77, 78, 73, 40, 58, 32, 48, 45, 55, 51, 59, 68, 34, 83, 65, 57, 50, 57, 93, 62, 37, 70, 62 ] # SOME items are in lst_a lst_c = [93, 108, 15, 42, 27, 83] print[[True for i in lst_a if i in lst_c], '\n'] print[[i for i in lst_a if i in lst_c]] # Result # [True, True, True] [27, 83, 93]3 nếu bất kỳ mục nào trong danh sách này xuất hiện trong danh sách kia. Nó sẽ chỉ trả về
# Main list lst_a = [24, 17, 37, 16, 27, 13, 46, 40, 46, 51, 44, 29, 54, 77, 78, 73, 40, 58, 32, 48, 45, 55, 51, 59, 68, 34, 83, 65, 57, 50, 57, 93, 62, 37, 70, 62 ] # SOME items are in lst_a lst_c = [93, 108, 15, 42, 27, 83] print[list[filter[lambda i: i in lst_a, lst_c]]] # Result # [93, 27, 83]2 khi hai danh sách hoàn toàn tách biệt mà không có bất kỳ sự trùng lặp nào
🌍 Hướng dẫn đề xuất. Cách tìm các phần tử chung của hai danh sách
Tóm tắt
Để tóm tắt những gì chúng ta đã đề cập hôm nay, chúng ta đã xem xét một câu hỏi thường được đặt ra về cách tốt nhất để kiểm tra xem các mục trong danh sách này có nằm trong danh sách khác hay không.
- Chúng tôi bắt đầu với việc hiểu danh sách cơ bản bằng cách sử dụng vòng lặp 3 vòng
# Main list lst_a = [24, 17, 37, 16, 27, 13, 46, 40, 46, 51, 44, 29, 54, 77, 78, 73, 40, 58, 32, 48, 45, 55, 51, 59, 68, 34, 83, 65, 57, 50, 57, 93, 62, 37, 70, 62 ] # ALL items are in lst_a lst_b = [59, 37, 32, 40] # SOME items are in lst_a lst_c = [93, 108, 15, 42, 27, 83] # NO items are in lst_a lst_d = [23, 101, 63, 35] print[set[lst_b].issubset[lst_a]] print[set[lst_c].issubset[lst_a]] print[set[lst_d].issubset[lst_a], '\n'] print[list[set[lst_a].intersection[set[lst_b]]]] print[list[set[lst_a].intersection[set[lst_c]]]] print[list[set[lst_a].intersection[set[lst_d]]]] # Result # True False False [32, 40, 59, 37] [27, 83, 93] []
, trước khi kiểm tra xem biểu thức# Main list lst_a = [24, 17, 37, 16, 27, 13, 46, 40, 46, 51, 44, 29, 54, 77, 78, 73, 40, 58, 32, 48, 45, 55, 51, 59, 68, 34, 83, 65, 57, 50, 57, 93, 62, 37, 70, 62 ] # ALL items are in lst_a lst_b = [59, 37, 32, 40] # SOME items are in lst_a lst_c = [93, 108, 15, 42, 27, 83] # NO items are in lst_a lst_d = [23, 101, 63, 35] print[set[lst_b].issubset[lst_a]] print[set[lst_c].issubset[lst_a]] print[set[lst_d].issubset[lst_a], '\n'] print[list[set[lst_a].intersection[set[lst_b]]]] print[list[set[lst_a].intersection[set[lst_c]]]] print[list[set[lst_a].intersection[set[lst_d]]]] # Result # True False False [32, 40, 59, 37] [27, 83, 93] []
4 có phù hợp hơn không. Cuối cùng, chúng tôi đã kết thúc với cách hiểu danh sách một dòng trả về# Main list lst_a = [24, 17, 37, 16, 27, 13, 46, 40, 46, 51, 44, 29, 54, 77, 78, 73, 40, 58, 32, 48, 45, 55, 51, 59, 68, 34, 83, 65, 57, 50, 57, 93, 62, 37, 70, 62 ] # SOME items are in lst_a lst_c = [93, 108, 15, 42, 27, 83] print[list[filter[lambda i: i in lst_a, lst_c]]] # Result # [93, 27, 83]
2 hoặc# Main list lst_a = [24, 17, 37, 16, 27, 13, 46, 40, 46, 51, 44, 29, 54, 77, 78, 73, 40, 58, 32, 48, 45, 55, 51, 59, 68, 34, 83, 65, 57, 50, 57, 93, 62, 37, 70, 62 ] # SOME items are in lst_a lst_c = [93, 108, 15, 42, 27, 83] print[[True for i in lst_a if i in lst_c], '\n'] print[[i for i in lst_a if i in lst_c]] # Result # [True, True, True] [27, 83, 93]
3 về việc mỗi mục danh sách có nằm trong danh sách khác hay không. Chúng tôi cũng đã sử dụng cách hiểu danh sách một dòng để trả về giá trị thực của các bản sao dưới dạng danh sách - Sau đó, chúng tôi đã khám phá các hàm dựng sẵn của Python
# Main list lst_a = [24, 17, 37, 16, 27, 13, 46, 40, 46, 51, 44, 29, 54, 77, 78, 73, 40, 58, 32, 48, 45, 55, 51, 59, 68, 34, 83, 65, 57, 50, 57, 93, 62, 37, 70, 62 ] # SOME items are in lst_a lst_c = [93, 108, 15, 42, 27, 83] print[list[filter[lambda i: i in lst_a, lst_c]]] # Result # [93, 27, 83]
4 vàa = [True, False, True, False, True] print[any[a]] # Result # True
0 trả về đúng hoặc sai tùy thuộc vào việc có bất kỳ hoặc tất cả các mục trong một danh sách lặp lại trong một danh sách khác - Cuối cùng, chúng tôi đã giới thiệu một số phương thức được sử dụng trong kiểu dữ liệu
# Main list lst_a = [24, 17, 37, 16, 27, 13, 46, 40, 46, 51, 44, 29, 54, 77, 78, 73, 40, 58, 32, 48, 45, 55, 51, 59, 68, 34, 83, 65, 57, 50, 57, 93, 62, 37, 70, 62 ] # ALL items are in lst_a lst_b = [59, 37, 32, 40] # SOME items are in lst_a lst_c = [93, 108, 15, 42, 27, 83] # NO items are in lst_a lst_d = [23, 101, 63, 35] print[set[lst_b].issubset[lst_a]] print[set[lst_c].issubset[lst_a]] print[set[lst_d].issubset[lst_a], '\n'] print[list[set[lst_a].intersection[set[lst_b]]]] print[list[set[lst_a].intersection[set[lst_c]]]] print[list[set[lst_a].intersection[set[lst_d]]]] # Result # True False False [32, 40, 59, 37] [27, 83, 93] []
9. Sử dụnga = [True, False, True, False, True] print[any[a]] # Result # True
7, chúng tôi có thể trả về đúng hay sai về việc các mục trong danh sách có trùng lặp trong danh sách khác hay không và sử dụngprint[any[x in lst_a for x in lst_b]] print[any[x in lst_a for x in lst_c]] print[any[x in lst_a for x in lst_d]] # Result # True True False
5, chúng tôi trả về giá trị của các mục trùng lặp - Như một phần thưởng, chúng tôi cũng đã giới thiệu một số phương pháp
# Main list lst_a = [24, 17, 37, 16, 27, 13, 46, 40, 46, 51, 44, 29, 54, 77, 78, 73, 40, 58, 32, 48, 45, 55, 51, 59, 68, 34, 83, 65, 57, 50, 57, 93, 62, 37, 70, 62 ] # ALL items are in lst_a lst_b = [59, 37, 32, 40] # SOME items are in lst_a lst_c = [93, 108, 15, 42, 27, 83] # NO items are in lst_a lst_d = [23, 101, 63, 35] print[set[lst_b].issubset[lst_a]] print[set[lst_c].issubset[lst_a]] print[set[lst_d].issubset[lst_a], '\n'] print[list[set[lst_a].intersection[set[lst_b]]]] print[list[set[lst_a].intersection[set[lst_c]]]] print[list[set[lst_a].intersection[set[lst_d]]]] # Result # True False False [32, 40, 59, 37] [27, 83, 93] []
9 khác cho phép chúng tôi thao tác thêm các danh sách để trả về dữ liệu hữu ích
Tôi hy vọng các ví dụ được sử dụng trong bài viết này hữu ích. Chúng không phải là cách duy nhất để giải quyết vấn đề ban đầu nhưng có đủ ví dụ ở đây để giúp bạn bắt đầu hành trình với danh sách. Tôi đặc biệt giới thiệu các bài viết sau đây cho những ai muốn tìm hiểu sâu hơn về một số phương pháp được hiển thị ngày nay
Để khám phá các chức năng tích hợp sẵn của Python, tôi khuyên bạn nên bắt đầu tại đây; . //Blog. người tài chính. com/python-build-in-functions/
Để có một khởi đầu tốt với việc hiểu danh sách, hãy thử bài viết này; . //Blog. người tài chính. com/list-hiểu/
Nếu bạn muốn biết thêm về cách viết mã một dòng thì bạn không thể bỏ qua cuốn sách này; . //www. amazon. com/gp/product/B07ZY7XMX8
Tôi hy vọng bạn thích bài viết. Cảm ơn vì đã đọc
David Yeoman
David là một lập trình viên Python và là một nhà văn kỹ thuật tạo ra các bài báo chuyên sâu dành cho những độc giả muốn có những lời giải thích đơn giản cho các chủ đề gây khó khăn bởi thuật ngữ chuyên ngành. Cũng là một thợ mộc, thợ kim loại, nhiếp ảnh gia phong cảnh và phi công, anh ấy làm nghề tự do sau 42 năm làm việc trong thế giới doanh nghiệp. Anh ấy có bằng MBA về Công nghệ
Làm cách nào để kiểm tra xem tất cả các phần tử của một danh sách có nằm trong danh sách khác không?
Làm cách nào để kiểm tra xem một chuỗi trong danh sách có nằm trong danh sách Python khác không?