Tôi muốn viết một hàm Python kiểm tra xem một chuỗi là chuỗi tiền tố của một chuỗi khác; không phải là một chuỗi phụ tùy ý của một chuỗi khác; Phải là tiền tố. Nếu có, trả lại đúng. Ví dụ,
list = ['abc', 'abcd', 'xyx', 'mno']
Trả về
list = ['abc', 'xyzabc', 'mno']
4 vì list = ['abc', 'xyzabc', 'mno']
5 là tiền tố là list = ['abc', 'xyzabc', 'mno']
6.list = ['abc', 'xyzabc', 'mno']
Trả lại
list = ['abc', 'xyzabc', 'mno']
7Tôi đã thử
list = ['abc', 'xyzabc', 'mno']
8 và danh sách hiểu, nhưng nó không hoạt động hoàn toàn. Đánh giá cao cho bất kỳ sự giúp đỡ hoặc con trỏ.
bagrat
6.9505 huy hiệu vàng27 Huy hiệu bạc47 Huy hiệu đồng5 gold badges27 silver badges47 bronze badges
Đã hỏi ngày 19 tháng 5 năm 2015 lúc 8:44May 19, 2015 at 8:44
8
Trước tiên chúng ta hãy sắp xếp độ dài
list = ['abc', 'xyzabc', 'mno']
9 W.R.T của chuỗi, do thực tế đã biết rằng các chuỗi phụ luôn có độ dài nhỏ hơn hoặc bằng chuỗi ban đầu, vì vậy sau khi sắp xếp chúng tôi có các chuỗi có độ dài nhỏ hơn khi bắt đầu danh sách và Sau đó, chúng tôi lặp lại danh sách được sắp xếp so sánh phần tử hiện tại với tất cả các phần tử bên cạnh, tối ưu hóa nhỏ này sẽ làm giảm sự phức tạp của vấn đề vì bây giờ chúng tôi không phải kết hợp từng yếu tố với mọi yếu tố khác.lst1 = ['abc', 'abcd', 'xyx', 'mno']
lst2 = ['abc', 'xyzabc', 'mno']
lst3 = ["abc", "abc"]
def check_list[lst]:
lst = list[set[lst]] #if you want to avoid redundant strings.
lst.sort[key = lambda x:len[x]]
n = len[lst]
for i in xrange[n]:
for j in xrange[i+1, n]:
if lst[j].startswith[lst[i]]:
return True
return False
print check_list[lst1]
print check_list[lst2]
print check_list[lst3]
>>> True
>>> False
>>> False #incase you use lst = list[set[lst]]
Đã trả lời ngày 19 tháng 5 năm 2015 lúc 8:56May 19, 2015 at 8:56
ZdarzdarZdaR
21.5K7 Huy hiệu vàng61 Huy hiệu bạc84 Huy hiệu đồng7 gold badges61 silver badges84 bronze badges
4
Sử dụng
lst1 = ['abc', 'abcd', 'xyx', 'mno']
lst2 = ['abc', 'xyzabc', 'mno']
lst3 = ["abc", "abc"]
def check_list[lst]:
lst = list[set[lst]] #if you want to avoid redundant strings.
lst.sort[key = lambda x:len[x]]
n = len[lst]
for i in xrange[n]:
for j in xrange[i+1, n]:
if lst[j].startswith[lst[i]]:
return True
return False
print check_list[lst1]
print check_list[lst2]
print check_list[lst3]
>>> True
>>> False
>>> False #incase you use lst = list[set[lst]]
0import itertools
list1 = ["abc", "xyz", "abc123"]
products = itertools.product[list1, list1]
is_substringy = any[x.startswith[y] for x, y in products if x != y]
Điều này không được tối ưu hóa lắm, nhưng tùy thuộc vào lượng dữ liệu bạn phải xử lý, mã khá thanh lịch [và ngắn]; Điều đó có thể vượt quá tốc độ trong trường hợp sử dụng của bạn.
Tuy nhiên, điều này giả định rằng bạn không có lặp lại thuần túy trong danh sách [nhưng bạn không có điều đó trong ví dụ của mình].
Đã trả lời ngày 19 tháng 5 năm 2015 lúc 8:59May 19, 2015 at 8:59
LexystardustlexystardustLexyStardust
1.0085 huy hiệu bạc17 huy hiệu đồng5 silver badges17 bronze badges
1
import itertools
mlist = ['abc', 'abcd', 'xyx', 'mno']
#combination of list elements, 2-by-2. without repetition
In [638]: for i,j in itertools.combinations[mlist,2]:
print [i,j]
.....:
['abc', 'abcd']
['abc', 'xyx']
['abc', 'mno']
['abcd', 'xyx']
['abcd', 'mno']
['xyx', 'mno']
#r holds the final result. if there is any pair where one is a prefixed of another
r=False
In [639]: for i,j in itertools.combinations[mlist,2]:
r = r or i.startswith[j] # if i is the prefix of j. logical or
r = r or j.startswith[i] # if j is the prefix of i
.....:
In [640]: r
Out[640]: True
Đã trả lời ngày 19 tháng 5 năm 2015 lúc 9:02May 19, 2015 at 9:02
MojmojMoj
5.6612 Huy hiệu vàng22 Huy hiệu bạc34 Huy hiệu đồng2 gold badges22 silver badges34 bronze badges
3
Tóm tắt: Trong hướng dẫn này, bạn sẽ học cách sử dụng phương thức chuỗi Python
1 để kiểm tra xem một chuỗi bắt đầu bằng một chuỗi khác.: in this tutorial, you’ll learn how to use the Python string lst1 = ['abc', 'abcd', 'xyx', 'mno']
lst2 = ['abc', 'xyzabc', 'mno']
lst3 = ["abc", "abc"]
def check_list[lst]:
lst = list[set[lst]] #if you want to avoid redundant strings.
lst.sort[key = lambda x:len[x]]
n = len[lst]
for i in xrange[n]:
for j in xrange[i+1, n]:
if lst[j].startswith[lst[i]]:
return True
return False
print check_list[lst1]
print check_list[lst2]
print check_list[lst3]
>>> True
>>> False
>>> False #incase you use lst = list[set[lst]]
lst1 = ['abc', 'abcd', 'xyx', 'mno']
lst2 = ['abc', 'xyzabc', 'mno']
lst3 = ["abc", "abc"]
def check_list[lst]:
lst = list[set[lst]] #if you want to avoid redundant strings.
lst.sort[key = lambda x:len[x]]
n = len[lst]
for i in xrange[n]:
for j in xrange[i+1, n]:
if lst[j].startswith[lst[i]]:
return True
return False
print check_list[lst1]
print check_list[lst2]
print check_list[lst3]
>>> True
>>> False
>>> False #incase you use lst = list[set[lst]]
1 method to check if a string begins with another string.Giới thiệu về phương thức String String STARTSWITH []
Phương thức
lst1 = ['abc', 'abcd', 'xyx', 'mno']
lst2 = ['abc', 'xyzabc', 'mno']
lst3 = ["abc", "abc"]
def check_list[lst]:
lst = list[set[lst]] #if you want to avoid redundant strings.
lst.sort[key = lambda x:len[x]]
n = len[lst]
for i in xrange[n]:
for j in xrange[i+1, n]:
if lst[j].startswith[lst[i]]:
return True
return False
print check_list[lst1]
print check_list[lst2]
print check_list[lst3]
>>> True
>>> False
>>> False #incase you use lst = list[set[lst]]
1 trả về list = ['abc', 'xyzabc', 'mno']
4 nếu một chuỗi bắt đầu bằng một chuỗi khác. Nếu không, nó trả về list = ['abc', 'xyzabc', 'mno']
7.Sau đây cho thấy cú pháp của phương thức
lst1 = ['abc', 'abcd', 'xyx', 'mno']
lst2 = ['abc', 'xyzabc', 'mno']
lst3 = ["abc", "abc"]
def check_list[lst]:
lst = list[set[lst]] #if you want to avoid redundant strings.
lst.sort[key = lambda x:len[x]]
n = len[lst]
for i in xrange[n]:
for j in xrange[i+1, n]:
if lst[j].startswith[lst[i]]:
return True
return False
print check_list[lst1]
print check_list[lst2]
print check_list[lst3]
>>> True
>>> False
>>> False #incase you use lst = list[set[lst]]
1:Code language: Python [python]
str.startswith[prefix, [,start [,end ]]
Phương thức
lst1 = ['abc', 'abcd', 'xyx', 'mno']
lst2 = ['abc', 'xyzabc', 'mno']
lst3 = ["abc", "abc"]
def check_list[lst]:
lst = list[set[lst]] #if you want to avoid redundant strings.
lst.sort[key = lambda x:len[x]]
n = len[lst]
for i in xrange[n]:
for j in xrange[i+1, n]:
if lst[j].startswith[lst[i]]:
return True
return False
print check_list[lst1]
print check_list[lst2]
print check_list[lst3]
>>> True
>>> False
>>> False #incase you use lst = list[set[lst]]
1 chấp nhận ba tham số:
7 là một chuỗi hoặc một bộ chuỗi để tìm kiếm. Tham sốlst1 = ['abc', 'abcd', 'xyx', 'mno'] lst2 = ['abc', 'xyzabc', 'mno'] lst3 = ["abc", "abc"] def check_list[lst]: lst = list[set[lst]] #if you want to avoid redundant strings. lst.sort[key = lambda x:len[x]] n = len[lst] for i in xrange[n]: for j in xrange[i+1, n]: if lst[j].startswith[lst[i]]: return True return False print check_list[lst1] print check_list[lst2] print check_list[lst3] >>> True >>> False >>> False #incase you use lst = list[set[lst]]
7 là bắt buộc.lst1 = ['abc', 'abcd', 'xyx', 'mno'] lst2 = ['abc', 'xyzabc', 'mno'] lst3 = ["abc", "abc"] def check_list[lst]: lst = list[set[lst]] #if you want to avoid redundant strings. lst.sort[key = lambda x:len[x]] n = len[lst] for i in xrange[n]: for j in xrange[i+1, n]: if lst[j].startswith[lst[i]]: return True return False print check_list[lst1] print check_list[lst2] print check_list[lst3] >>> True >>> False >>> False #incase you use lst = list[set[lst]]
9 là vị trí mà phương pháp bắt đầu tìm kiếmlst1 = ['abc', 'abcd', 'xyx', 'mno'] lst2 = ['abc', 'xyzabc', 'mno'] lst3 = ["abc", "abc"] def check_list[lst]: lst = list[set[lst]] #if you want to avoid redundant strings. lst.sort[key = lambda x:len[x]] n = len[lst] for i in xrange[n]: for j in xrange[i+1, n]: if lst[j].startswith[lst[i]]: return True return False print check_list[lst1] print check_list[lst2] print check_list[lst3] >>> True >>> False >>> False #incase you use lst = list[set[lst]]
7. Tham sốlst1 = ['abc', 'abcd', 'xyx', 'mno'] lst2 = ['abc', 'xyzabc', 'mno'] lst3 = ["abc", "abc"] def check_list[lst]: lst = list[set[lst]] #if you want to avoid redundant strings. lst.sort[key = lambda x:len[x]] n = len[lst] for i in xrange[n]: for j in xrange[i+1, n]: if lst[j].startswith[lst[i]]: return True return False print check_list[lst1] print check_list[lst2] print check_list[lst3] >>> True >>> False >>> False #incase you use lst = list[set[lst]]
9 là tùy chọn.lst1 = ['abc', 'abcd', 'xyx', 'mno'] lst2 = ['abc', 'xyzabc', 'mno'] lst3 = ["abc", "abc"] def check_list[lst]: lst = list[set[lst]] #if you want to avoid redundant strings. lst.sort[key = lambda x:len[x]] n = len[lst] for i in xrange[n]: for j in xrange[i+1, n]: if lst[j].startswith[lst[i]]: return True return False print check_list[lst1] print check_list[lst2] print check_list[lst3] >>> True >>> False >>> False #incase you use lst = list[set[lst]]
2 là vị trí trong chuỗi mà phương thức dừng tìm kiếmimport itertools list1 = ["abc", "xyz", "abc123"] products = itertools.product[list1, list1] is_substringy = any[x.startswith[y] for x, y in products if x != y]
7. Tham sốlst1 = ['abc', 'abcd', 'xyx', 'mno'] lst2 = ['abc', 'xyzabc', 'mno'] lst3 = ["abc", "abc"] def check_list[lst]: lst = list[set[lst]] #if you want to avoid redundant strings. lst.sort[key = lambda x:len[x]] n = len[lst] for i in xrange[n]: for j in xrange[i+1, n]: if lst[j].startswith[lst[i]]: return True return False print check_list[lst1] print check_list[lst2] print check_list[lst3] >>> True >>> False >>> False #incase you use lst = list[set[lst]]
2 cũng là tùy chọn.import itertools list1 = ["abc", "xyz", "abc123"] products = itertools.product[list1, list1] is_substringy = any[x.startswith[y] for x, y in products if x != y]
Lưu ý rằng phương pháp
lst1 = ['abc', 'abcd', 'xyx', 'mno']
lst2 = ['abc', 'xyzabc', 'mno']
lst3 = ["abc", "abc"]
def check_list[lst]:
lst = list[set[lst]] #if you want to avoid redundant strings.
lst.sort[key = lambda x:len[x]]
n = len[lst]
for i in xrange[n]:
for j in xrange[i+1, n]:
if lst[j].startswith[lst[i]]:
return True
return False
print check_list[lst1]
print check_list[lst2]
print check_list[lst3]
>>> True
>>> False
>>> False #incase you use lst = list[set[lst]]
1 nhạy cảm trường hợp. Nói cách khác, nó sẽ tìm kiếm trường hợp nhạy cảm với trường hợp lst1 = ['abc', 'abcd', 'xyx', 'mno']
lst2 = ['abc', 'xyzabc', 'mno']
lst3 = ["abc", "abc"]
def check_list[lst]:
lst = list[set[lst]] #if you want to avoid redundant strings.
lst.sort[key = lambda x:len[x]]
n = len[lst]
for i in xrange[n]:
for j in xrange[i+1, n]:
if lst[j].startswith[lst[i]]:
return True
return False
print check_list[lst1]
print check_list[lst2]
print check_list[lst3]
>>> True
>>> False
>>> False #incase you use lst = list[set[lst]]
7.Ví dụ về phương thức chuỗi Python StringSwith []
Hãy cùng lấy một số ví dụ về việc sử dụng phương thức chuỗi
lst1 = ['abc', 'abcd', 'xyx', 'mno']
lst2 = ['abc', 'xyzabc', 'mno']
lst3 = ["abc", "abc"]
def check_list[lst]:
lst = list[set[lst]] #if you want to avoid redundant strings.
lst.sort[key = lambda x:len[x]]
n = len[lst]
for i in xrange[n]:
for j in xrange[i+1, n]:
if lst[j].startswith[lst[i]]:
return True
return False
print check_list[lst1]
print check_list[lst2]
print check_list[lst3]
>>> True
>>> False
>>> False #incase you use lst = list[set[lst]]
1.1] Sử dụng phương thức startSwith [] để kiểm tra xem một chuỗi bắt đầu bằng một chuỗi khác
Ví dụ sau đây cho thấy cách sử dụng phương thức chuỗi
lst1 = ['abc', 'abcd', 'xyx', 'mno']
lst2 = ['abc', 'xyzabc', 'mno']
lst3 = ["abc", "abc"]
def check_list[lst]:
lst = list[set[lst]] #if you want to avoid redundant strings.
lst.sort[key = lambda x:len[x]]
n = len[lst]
for i in xrange[n]:
for j in xrange[i+1, n]:
if lst[j].startswith[lst[i]]:
return True
return False
print check_list[lst1]
print check_list[lst2]
print check_list[lst3]
>>> True
>>> False
>>> False #incase you use lst = list[set[lst]]
1 để kiểm tra xem một chuỗi bắt đầu bằng một chuỗi khác:Code language: Python [python]
s = 'Make it work, make it right, make it fast.' result = s.startswith['Make'] print[result]
Output:
Code language: Python [python]
True
Như đã đề cập trước đó, phương thức
lst1 = ['abc', 'abcd', 'xyx', 'mno']
lst2 = ['abc', 'xyzabc', 'mno']
lst3 = ["abc", "abc"]
def check_list[lst]:
lst = list[set[lst]] #if you want to avoid redundant strings.
lst.sort[key = lambda x:len[x]]
n = len[lst]
for i in xrange[n]:
for j in xrange[i+1, n]:
if lst[j].startswith[lst[i]]:
return True
return False
print check_list[lst1]
print check_list[lst2]
print check_list[lst3]
>>> True
>>> False
>>> False #incase you use lst = list[set[lst]]
1 tìm kiếm một trường hợp nhạy cảm với chuỗi. Do đó, ví dụ sau trả về list = ['abc', 'xyzabc', 'mno']
7:Code language: Python [python]
s = 'Make it work, make it right, make it fast.' result = s.startswith['make'] print[result]
Output:
Code language: Python [python]
False
2] Sử dụng phương thức startSwith [] với một bộ tu
Ví dụ sau sử dụng phương thức
lst1 = ['abc', 'abcd', 'xyx', 'mno']
lst2 = ['abc', 'xyzabc', 'mno']
lst3 = ["abc", "abc"]
def check_list[lst]:
lst = list[set[lst]] #if you want to avoid redundant strings.
lst.sort[key = lambda x:len[x]]
n = len[lst]
for i in xrange[n]:
for j in xrange[i+1, n]:
if lst[j].startswith[lst[i]]:
return True
return False
print check_list[lst1]
print check_list[lst2]
print check_list[lst3]
>>> True
>>> False
>>> False #incase you use lst = list[set[lst]]
1 để kiểm tra xem một chuỗi bắt đầu bằng một trong các chuỗi trong một tuple:list = ['abc', 'xyzabc', 'mno']
0Output:
list = ['abc', 'xyzabc', 'mno']
13] Sử dụng phương thức startSwith [] với tham số bắt đầu
Ví dụ sau đây minh họa cách sử dụng phương thức
lst1 = ['abc', 'abcd', 'xyx', 'mno']
lst2 = ['abc', 'xyzabc', 'mno']
lst3 = ["abc", "abc"]
def check_list[lst]:
lst = list[set[lst]] #if you want to avoid redundant strings.
lst.sort[key = lambda x:len[x]]
n = len[lst]
for i in xrange[n]:
for j in xrange[i+1, n]:
if lst[j].startswith[lst[i]]:
return True
return False
print check_list[lst1]
print check_list[lst2]
print check_list[lst3]
>>> True
>>> False
>>> False #incase you use lst = list[set[lst]]
1 để kiểm tra xem chuỗi bắt đầu với từ tạo từ chữ thường bắt đầu từ vị trí 14:list = ['abc', 'xyzabc', 'mno']
2Output:
Code language: Python [python]
True
Bản tóm tắt
- Sử dụng phương thức Chuỗi Python
1 để xác định xem một chuỗi bắt đầu bằng một chuỗi khác.lst1 = ['abc', 'abcd', 'xyx', 'mno'] lst2 = ['abc', 'xyzabc', 'mno'] lst3 = ["abc", "abc"] def check_list[lst]: lst = list[set[lst]] #if you want to avoid redundant strings. lst.sort[key = lambda x:len[x]] n = len[lst] for i in xrange[n]: for j in xrange[i+1, n]: if lst[j].startswith[lst[i]]: return True return False print check_list[lst1] print check_list[lst2] print check_list[lst3] >>> True >>> False >>> False #incase you use lst = list[set[lst]]
Bạn có thấy hướng dẫn này hữu ích không?