Cách kiểm tra xem danh sách có nằm trong danh sách khác python

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 #
True
0 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 #
True
0 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 #
True
0 , 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 #
True
7 – 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 #
True
8 – 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 #
True
9,
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
0 đượ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
False
1 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
False
2 – 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
False
3 – 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
False
4 – 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
False
5 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
False
6

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
False
7 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
False
0 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
False
1 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
False
2 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
False
2 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ụng
    a = [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ụ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
    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?

Phương pháp #1. Sử dụng hàm all[] . Kiểm tra tất cả các phần tử của một danh sách để tồn tại trong các danh sách khác.

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?

Python Tìm Chuỗi trong Danh sách bằng cách sử dụng count[] Chúng ta cũng có thể sử dụng hàm count[] để lấy số lần xuất hiện của một chuỗi trong . Nếu đầu ra của nó là 0, thì điều đó có nghĩa là chuỗi đó không có trong danh sách.

Chủ Đề