Hướng dẫn how do i check if a value is in a list python? - làm cách nào để kiểm tra xem một giá trị có trong danh sách python không?

Câu hỏi ban đầu là:

Cách nhanh nhất để biết nếu một giá trị tồn tại trong một danh sách (một danh sách có hàng triệu giá trị trong đó) và chỉ số của nó là gì?

Do đó, có hai điều cần tìm:

  1. là một mục trong danh sách, và
  2. Chỉ mục là gì (nếu trong danh sách).

Hướng tới điều này, tôi đã sửa đổi mã @xslittlegrass để tính toán các chỉ mục trong mọi trường hợp và thêm một phương thức bổ sung.

Kết quả

Hướng dẫn how do i check if a value is in a list python? - làm cách nào để kiểm tra xem một giá trị có trong danh sách python không?

Phương pháp là:

  1. trong-về cơ bản nếu x in b: return b.index (x)
  2. Hãy thử-hãy thử/bắt trên B.index (x) (bỏ qua phải kiểm tra xem x trong b)
  3. Đặt-về cơ bản nếu x trong set (b): return b.index (x)
  4. Bisect-phân loại B với chỉ số của nó, tìm kiếm nhị phân cho X được sắp xếp (b). Lưu ý mod từ @xslittlegrass, người trả về chỉ mục trong B được sắp xếp, thay vì ban đầu b)
  5. đảo ngược-từ điển tra cứu ngược d cho b; sau đó d [x] cung cấp chỉ số của x.

Kết quả cho thấy phương pháp 5 là nhanh nhất.

Điều thú vị là thử và các phương pháp đã đặt tương đương với thời gian.try and the set methods are equivalent in time.


Mã kiểm tra

import random
import bisect
import matplotlib.pyplot as plt
import math
import timeit
import itertools

def wrapper(func, *args, **kwargs):
    " Use to produced 0 argument function for call it"
    # Reference https://www.pythoncentral.io/time-a-python-function/
    def wrapped():
        return func(*args, **kwargs)
    return wrapped

def method_in(a,b,c):
    for i,x in enumerate(a):
        if x in b:
            c[i] = b.index(x)
        else:
            c[i] = -1
    return c

def method_try(a,b,c):
    for i, x in enumerate(a):
        try:
            c[i] = b.index(x)
        except ValueError:
            c[i] = -1

def method_set_in(a,b,c):
    s = set(b)
    for i,x in enumerate(a):
        if x in s:
            c[i] = b.index(x)
        else:
            c[i] = -1
    return c

def method_bisect(a,b,c):
    " Finds indexes using bisection "

    # Create a sorted b with its index
    bsorted = sorted([(x, i) for i, x in enumerate(b)], key = lambda t: t[0])

    for i,x in enumerate(a):
        index = bisect.bisect_left(bsorted,(x, ))
        c[i] = -1
        if index < len(a):
            if x == bsorted[index][0]:
                c[i] = bsorted[index][1]  # index in the b array

    return c

def method_reverse_lookup(a, b, c):
    reverse_lookup = {x:i for i, x in enumerate(b)}
    for i, x in enumerate(a):
        c[i] = reverse_lookup.get(x, -1)
    return c

def profile():
    Nls = [x for x in range(1000,20000,1000)]
    number_iterations = 10
    methods = [method_in, method_try, method_set_in, method_bisect, method_reverse_lookup]
    time_methods = [[] for _ in range(len(methods))]

    for N in Nls:
        a = [x for x in range(0,N)]
        random.shuffle(a)
        b = [x for x in range(0,N)]
        random.shuffle(b)
        c = [0 for x in range(0,N)]

        for i, func in enumerate(methods):
            wrapped = wrapper(func, a, b, c)
            time_methods[i].append(math.log(timeit.timeit(wrapped, number=number_iterations)))

    markers = itertools.cycle(('o', '+', '.', '>', '2'))
    colors = itertools.cycle(('r', 'b', 'g', 'y', 'c'))
    labels = itertools.cycle(('in', 'try', 'set', 'bisect', 'reverse'))

    for i in range(len(time_methods)):
        plt.plot(Nls,time_methods[i],marker = next(markers),color=next(colors),linestyle='-',label=next(labels))

    plt.xlabel('list size', fontsize=18)
    plt.ylabel('log(time)', fontsize=18)
    plt.legend(loc = 'upper left')
    plt.show()

profile()

Trong quá trình phát triển trong học máy, AI hoặc thậm chí phát triển web, chúng ta thường gặp phải một vấn đề mà chúng ta cần kiểm tra xem mục cụ thể từ một danh sách nhất định có phải là một chuỗi phụ hay không. Để kiểm tra xem danh sách có chứa phần tử cụ thể hay không trong Python, hãy sử dụng & nbsp; Hãy để khám phá chủ đề này một cách chi tiết.To check if the list contains the specific element or not in Python, use the “in” operator or “not in” operator. Let’s explore this topic in detail.

Để kiểm tra xem ListContains một phần tử trong Python, hãy sử dụng toán tử của In In trong nhà điều hành. Toán tử trong các nhà điều hành của người Viking có kiểm tra xem danh sách có chứa một mục cụ thể hay không. Nó cũng có thể kiểm tra xem phần tử có tồn tại trong danh sách hoặc không sử dụng hàm danh sách.count () không.check if the list contains an element in Python, use the “in” operator. The “in” operator checks if the list contains a specific item or not. It can also check if the element exists on the list or not using the list.count() function.

Danh sách Python là một thùng chứa thiết yếu vì nó lưu trữ các yếu tố của tất cả các loại dữ liệu dưới dạng bộ sưu tập. Python, trong toán tử là cách thuận tiện nhất để kiểm tra xem một mục có tồn tại trong danh sách hay không.in operator” is the most convenient way to check if an item exists on the list or not.

Python không phải là một toán tử sẵn có đánh giá đúng nếu nó không tìm thấy một biến trong chuỗi được chỉ định và false & nbsp; nếu không.True if an item exists in the list and False if an item does not exist. The list need not be sorted to practice this approach of checking.

Để kiểm tra xem mục có tồn tại trong danh sách hay không, hãy sử dụng Python, trong toán tử. Ví dụ: chúng ta có thể sử dụng toán tử trong các toán tử trong điều kiện IF và nếu mục tồn tại trong danh sách, thì điều kiện sẽ trả về đúng và nếu không, thì nó sẽ trả về sai.True, and if not, then it returns False.

Xem cú pháp sau của Python trong toán tử.

# app.py

listA = ['Stranger Things', 'S Education', 'Game of Thrones']

if 'S Eductation' in listA:
    print("Yes, 'S Eductation' found in List : ", listA)

Đầu ra

python3 app.py
Yes, 'S Eductation' found in List :  ['Stranger Things', 'S Education', 'Game of Thrones']

Bạn có thể thấy rằng danh sách đầu tiên chứa tất cả các yếu tố của danh sách thứ hai. Điều này là do chúng tôi đã kiểm tra danh sách đầu tiên bằng phương thức All ().

# app.py

listA = ['Stranger Things', 'S Education', 'Game of Thrones']

if 'Dark' in listA:
    print("Yes, 'S Eductation' found in List : ", listA)
else:
    print("Nope, 'Dark' not found in the list")

Đầu ra

python3 app.py
Nope, 'Dark' Not found in the list

Bạn có thể thấy rằng danh sách đầu tiên chứa tất cả các yếu tố của danh sách thứ hai. Điều này là do chúng tôi đã kiểm tra danh sách đầu tiên bằng phương thức All ().False, and else block executes.

Sự kết luận

Có nhiều cách tiếp cận bạn có thể sử dụng để xác định xem một mục có tồn tại trong danh sách hay không. Ví dụ, chúng tôi đã thấy những cách sau đây.

Xem mã sau.

# app.py

data_string = "The last season of Game of Thrones was not good"

listA = ['Stranger Things', 'S Education', 'Game of Thrones']

print("The original string : " + data_string)

print("The original list : " + str(listA))

res = [ele for ele in listA if(ele in data_string)]

print("Does string contain any list element : " + str(bool(res)))

Đầu ra

Bạn có thể thấy rằng danh sách đầu tiên chứa tất cả các yếu tố của danh sách thứ hai. Điều này là do chúng tôi đã kiểm tra danh sách đầu tiên bằng phương thức All ().

Sự kết luận

Có nhiều cách tiếp cận bạn có thể sử dụng để xác định xem một mục có tồn tại trong danh sách hay không. Ví dụ, chúng tôi đã thấy những cách sau đây.zero or more for or if clauses. The expressions can be anything, meaning you can put all types of objects in lists.

Sử dụng python "trong nhà điều hành"context of the for and if clauses follow it.

Sử dụng danh sách Python hiểu biết

Hãy để xem, chuỗi có chứa từ không tồn tại trong một mục của danh sách không.

# app.py

data_string = "The last season of BoJack Horseman was good"

# initializing test list
listA = ['Stranger Things', 'S Education', 'Game of Thrones']

# printing original string
print("The original string : " + data_string)

# printing original list
print("The original list : " + str(listA))

# using list comprehension
# checking if string contains list element
res = [ele for ele in listA if(ele in data_string)]

# print result
print("Does string contain any list element : " + str(bool(res)))

Đầu ra

python3 app.py
The original string: The last season of BoJack Horseman was good
The original list : ['Stranger Things', 'S Education', 'Game of Thrones']
Does string contain any list element: False

Kiểm tra xem một phần tử có tồn tại trong danh sách bằng danh sách.count ()

Để kiểm tra xem mục có tồn tại trong danh sách Python hay không, hãy sử dụng phương thức list.Count ().

Chức năng cú pháp của danh sách.count () được theo sau.

list.count(elem)

Phương thức Số lượng danh sách Python (Mục) Trả về số lượng xuất hiện của phần tử đã cho trong danh sách. Nếu nó lớn hơn 0, điều đó có nghĩa là một mục nhất định tồn tại trong danh sách. method returns the occurrence count of the given element in the list. If it’s greater than 0, it means a given item exists in the list.

# app.py

listA = ['Stranger Things', 'S Education', 'Game of Thrones']

if 'S Eductation' in listA:
    print("Yes, 'S Eductation' found in List : ", listA)
0

Đầu ra

# app.py

listA = ['Stranger Things', 'S Education', 'Game of Thrones']

if 'S Eductation' in listA:
    print("Yes, 'S Eductation' found in List : ", listA)
1

Kiểm tra xem một phần tử có tồn tại trong danh sách bằng danh sách.count ()

Để kiểm tra xem mục có tồn tại trong danh sách Python hay không, hãy sử dụng phương thức list.Count ().

# app.py

listA = ['Stranger Things', 'S Education', 'Game of Thrones']

if 'S Eductation' in listA:
    print("Yes, 'S Eductation' found in List : ", listA)
2

Đầu ra

# app.py

listA = ['Stranger Things', 'S Education', 'Game of Thrones']

if 'S Eductation' in listA:
    print("Yes, 'S Eductation' found in List : ", listA)
3

Kiểm tra xem một phần tử có tồn tại trong danh sách bằng danh sách.count ()

Để kiểm tra xem mục có tồn tại trong danh sách Python hay không, hãy sử dụng phương thức list.Count ().

Chức năng cú pháp của danh sách.count () được theo sau.not in” is an inbuilt operator that evaluates to True if it does not finds a variable in the specified sequence and False otherwise.

Phương thức Số lượng danh sách Python (Mục) Trả về số lượng xuất hiện của phần tử đã cho trong danh sách. Nếu nó lớn hơn 0, điều đó có nghĩa là một mục nhất định tồn tại trong danh sách.

# app.py

listA = ['Stranger Things', 'S Education', 'Game of Thrones']

if 'S Eductation' in listA:
    print("Yes, 'S Eductation' found in List : ", listA)
4

Đầu ra

# app.py

listA = ['Stranger Things', 'S Education', 'Game of Thrones']

if 'S Eductation' in listA:
    print("Yes, 'S Eductation' found in List : ", listA)
5

Kiểm tra xem một phần tử có tồn tại trong danh sách bằng danh sách.count ()

Để kiểm tra xem mục có tồn tại trong danh sách Python hay không, hãy sử dụng phương thức list.Count ().

Chức năng cú pháp của danh sách.count () được theo sau.

Phương thức Số lượng danh sách Python (Mục) Trả về số lượng xuất hiện của phần tử đã cho trong danh sách. Nếu nó lớn hơn 0, điều đó có nghĩa là một mục nhất định tồn tại trong danh sách.

  1. Kiểm tra xem một phần tử có tồn tại trong danh sách bằng bất kỳ ()
  2. Sử dụng python bất kỳ () chức năng là cách cổ điển nhất mà bạn có thể thực hiện nhiệm vụ này và cũng hiệu quả. Hàm bất kỳ () kiểm tra cho một trận đấu trong một chuỗi với khớp của mỗi phần tử danh sách.

Từ đầu ra, Game of Thrones tồn tại trong danh sách.

Kiểm tra xem danh sách có chứa một mục sử dụng không trong toán tử nghịch đảo không.

Đầu ra

# app.py

listA = ['Stranger Things', 'S Education', 'Game of Thrones']

if 'S Eductation' in listA:
    print("Yes, 'S Eductation' found in List : ", listA)
7

Python không phải là một toán tử sẵn có đánh giá đúng nếu nó không tìm thấy một biến trong chuỗi được chỉ định và false & nbsp; nếu không.

Để kiểm tra xem danh sách có chứa một mục cụ thể hay không, bạn có thể sử dụng toán tử không trong toán tử nghịch đảo. Hãy cùng xem ví dụ sau đây.

& nbsp; python trong và không trong các nhà khai thác hoạt động tốt cho các danh sách, bộ dữ liệu, bộ và dicts (khóa kiểm tra).

  1. Phương thức Python All () để kiểm tra xem danh sách có tồn tại trong một danh sách khác không
  2. Trong chương trình này, bạn sẽ học cách kiểm tra xem danh sách Python có chứa tất cả các mục của danh sách khác và hiển thị kết quả bằng hàm python print ().
  3. Chúng tôi sẽ sử dụng hai danh sách có giá trị chồng chéo. Một trong số đó là cái lớn chứa tất cả các mục của cái thứ hai.
  4. List1 - Dist1 chứa tất cả hoặc một số mục của danh sách khác.

List2 - Đây là tập hợp con của cái đầu tiên.