Python小技巧 子串查詢

2021-09-07 21:05:40 字數 1362 閱讀 4830

慚愧啊,今天寫了個查詢子串的python程式被bs了…

如果讓你寫乙個程式檢查字串s2中是不是包含有s1。也許你會很直觀的寫下下面的**:

#determine whether s1 is a substring of s2
def issubstring1(s1,s2):
tag = false
len1 = len(s1)
len2 = len(s2)
for i in range(0,len2):
if s2[i] == s1[0]:
for j in range(0,len1):
if s2[i]==s1[j]:
tag = true
return tag
可是這是python,我們可以利用字串自帶的find()方法,於是可以這樣:

def issubstring2(s1,s2):
tag = false
if s2.find(s1) != -1:
tag = true
return tag
悲情的事就在於此,原來python中的關鍵字"in」不僅可以用於列表、元祖等資料型別,還可以用於字串。所以,這裡只需要直接一行**搞定:

def issubstring3(s1,s2):
return s1 in s2
後知後覺了,慚愧;-)

類似的,假設要在字串中,查詢多個子串是否存在,並列印出這些串和首次出現的位置:

def findsubstrings(substrings,deststring):
res =  map(lambda x:str([deststring.index(x),x]),filter(lambda x:x in deststring,substrings))
if res:
return ', '.join(list(res))
;-)  very cool~
update: 如果你不習慣最後面這種看起來很複雜的語法也沒關係,可以使用列表解析,更加簡潔:
def

findsubstrings(substrings,deststring):

return', 

'.join([str([deststring.index(x),x]) 

forx 

insubstrings 

ifx 

indeststring])

Python字串中查詢子串小技巧

慚愧啊,今天寫了個查詢子串的python程式被bs了 如果讓你寫乙個程式設計客棧程式檢查字串s2中是不是包含有s1。也許你會很直觀的寫下下面的 複製 如下 d程式設計客棧etermine whether s1 is a substring of s2 def issubstring1 s1,s2 t...

python原始碼查詢子串

首先找到string.find定義的地方,在objects stringobject.c static pyobject string find pystringobject self,pyobject args py local inline py ssize t string find inte...

查詢最長回文子串 python

回文串正著讀和反著讀都一樣的字串,如xyx和xyyx 問題給定乙個字串s,找s中的最長回文子串 如s asdfxxyxxhjkl 其最長回文子串是 xxyxx 從中間開始向兩邊擴散 舉個栗子 如 s abcxyxsed 可以看到存在的最長回文子串是 xyx 遍歷字串s i 0,s i a 向兩邊擴,...