Để 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ụ: Output: Để 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. Đư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: Đây là cách nó trông trong mã:chars = ["H", "e", "y"]
word = "Hello"
has_all = all[[char in word for char in chars]]
print[has_all]
False
Hướng dẫn từng bước một
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:
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
False0