Hướng dẫn how do you check if a string contains a list of characters python? - làm cách nào để kiểm tra xem một chuỗi có chứa danh sách các ký tự python không?

Để kiểm tra xem chuỗi Python có chứa tất cả các ký tự từ danh sách không, hãy kiểm tra xem mỗi ký tự có tồn tại trong từ không:

Đây là một ví dụ:

chars = ["H", "e", "y"]
word = "Hello"

has_all = all[[char in word for char in chars]]

print[has_all]

Output:

False

Để tìm hiểu các phương thức chuỗi hữu ích khác trong Python, vui lòng kiểm tra bài viết này.

Dưới đây bạn tìm thấy một hướng dẫn chi tiết hơn về cách kiểm tra xem một chuỗi có chứa các ký tự từ danh sách không.

Hướng dẫn từng bước một

Đưa ra một danh sách các ký tự và một chuỗi, bạn có thể kiểm tra xem tất cả các ký tự của danh sách có được tìm thấy trong chuỗi đích theo các bước sau không:

  1. Vòng lặp qua danh sách các ký tự. through the list of characters.
  2. Kiểm tra xem một ký tự nằm trong chuỗi đích. if a character is in the target string.
  3. Thêm sự thật vào một danh sách. the truth to a list.
  4. Kiểm tra xem tất cả các giá trị sự thật trong một danh sách có đúng không. if all truth values in a list are True.

Đây là cách nó trông trong mã:

chars = ["H", "e", "y"]
word = "Hello"
          
truths = []
          
# 1. Loop through the chars
for char in chars:
    # 2. Check if a character is in the target string
    truth = char in word
    # 3. Add the truth to a truths list
    truths.append[truth]
          
# 4. Check if all boolean values are True
has_all = True
for truth in truths:
    has_all = has_all and truth
          
print[has_all]

Output:

False

Nhưng bạn có thể làm cho đoạn mã này ngắn hơn bằng cách sử dụng:

  • Liệt kê sự hiểu biết để rút ngắn đầu tiên cho vòng lặp. to shorten the 1st for loop.
  • Phương pháp tích hợp tất cả [] để loại bỏ vòng lặp thứ 2. Phương pháp này kiểm tra nếu tất cả các booleans là đúng.all[] method to get rid of the 2nd loop. This method checks if all booleans are True.

Điều này làm cho mã trông giống như trong giải pháp ví dụ trong phần giới thiệu:

chars = ["H", "e", "y"]
word = "Hello"
          
has_all = all[[char in word for char in chars]]
          
print[has_all]

Output:

False

Để nói chung hơn, bạn có thể thực hiện một chức năng hoàn thành công việc.

Đây là cách nó trông trong mã:

def has_all[chars, string]:
    return all[[char in string for char in chars]]
          
# Example call
print[has_all["Hello", ["H","i"]]]

Output:

Nhưng bạn có thể làm cho đoạn mã này ngắn hơn bằng cách sử dụng:

Liệt kê sự hiểu biết để rút ngắn đầu tiên cho vòng lặp.

Phương pháp tích hợp tất cả [] để loại bỏ vòng lặp thứ 2. Phương pháp này kiểm tra nếu tất cả các booleans là đúng.

Điều này làm cho mã trông giống như trong giải pháp ví dụ trong phần giới thiệu:

Để nói chung hơn, bạn có thể thực hiện một chức năng hoàn thành công việc.

False

Sự kết luận

Hôm nay bạn đã học cách kiểm tra xem chuỗi Python có chứa tất cả các ký tự có trong danh sách không.

Để tóm tắt lại, bạn cần chạy một vòng lặp qua danh sách các ký tự. Sau đó, bạn cần kiểm tra xem mỗi ký tự đó có tồn tại trong chuỗi đích không.esmre library does the trick. In your case, the simpler, esm [part of esmre] is what you want.

//pypi.python.org/pypi/esmre/

//code.google.com/p/esmre/

Cảm ơn vì đã đọc.

>>> import esm
>>> index = esm.Index[]
>>> index.enter["he"]
>>> index.enter["she"]
>>> index.enter["his"]
>>> index.enter["hers"]
>>> index.fix[]
>>> index.query["this here is history"]
[[[1, 4], 'his'], [[5, 7], 'he'], [[13, 16], 'his']]
>>> index.query["Those are his sheep!"]
[[[10, 13], 'his'], [[14, 17], 'she'], [[15, 17], 'he']]
>>> 

Mã hóa hạnh phúc!

import random, timeit, string, esm

def uz[lelist, lestring]:
    for x in lelist:
        if lestring.count[x]:
            return 'Yep. "%s" contains characters from "%s" item.' % [lestring, x]



def ab[lelist, lestring]:
    return [e for e in lelist if e in lestring]


def use_esm[index, lestring]:
    return index.query[lestring]

for TEXT_LEN in [5, 50, 1000]:
    for SEARCH_LEN in [5, 20]:
        for N in [5, 50, 1000, 10000]:
            if TEXT_LEN < SEARCH_LEN:
                continue

            print 'TEXT_LEN:', TEXT_LEN, 'SEARCH_LEN:', SEARCH_LEN, 'N:', N

            lestring = ''.join[[random.choice[string.ascii_uppercase + string.digits] for _ in range[TEXT_LEN]]]
            lelist = [''.join[[random.choice[string.ascii_uppercase + string.digits] for _ in range[SEARCH_LEN]]] for _
                      in range[N]]

            index = esm.Index[]
            for i in lelist:
                index.enter[i]
            index.fix[]

            t_ab = timeit.Timer["ab[lelist, lestring]", setup="from __main__ import lelist, lestring, ab"]
            t_uz = timeit.Timer["uz[lelist, lestring]", setup="from __main__ import lelist, lestring, uz"]
            t_esm = timeit.Timer["use_esm[index, lestring]", setup="from __main__ import index, lestring, use_esm"]

            ab_time = t_ab.timeit[1000]
            uz_time = t_uz.timeit[1000]
            esm_time = t_esm.timeit[1000]

            min_time = min[ab_time, uz_time, esm_time]
            print '  ab%s: %f' % ['*' if ab_time == min_time else '', ab_time]
            print '  uz%s: %f' % ['*' if uz_time == min_time else '', uz_time]
            print '  esm%s %f:' % ['*' if esm_time == min_time else '', esm_time]

Đọc thêm

False
0

Bài Viết Liên Quan

Chủ Đề