Python split()分割函數Python實現源碼

樓主月初去騰訊時面試官臨時給的一道編程題,先說明下,本猿的本職工做是測試拉,因此代碼有不合理歡迎你們批評和指導!python

   先賣個關子吧,上下樓主當時本身臨場發揮的代碼(當時沒以爲,出來後都想給本身一巴掌):面試

##############################################編程

 
 1 def split_test(stringstr,charstr):
 2     templist = []
 3     for i in range(len(stringstr)):
 4         if stringstr[i]==charstr:
 5             print 'this is charstr!'
 6         else:
 7             templist.append(stringstr[i])
 8     return templist
 9 
10 if __name__=="__main__":
11     print split_test("abcdefgavavb",'a')
 

##################################
預期結果:
C:\Python27\python.exe C:/Users/Administrator/PycharmProjects/ChenDejieWorkSpace/.idea/Split_test.py
this is charstr!
this is charstr!
this is charstr!
['b', 'c', 'd', 'e', 'f', 'g', 'v', 'v', 'b']
樓豬當時確時沒想不少,之前用split()用得很是多,但歷來沒研究過,當時寫出來後還津津樂道,覺得本身多牛逼(好吧,我是二逼,你們勿噴)
##############################################################
今天下午遇到一些字符上的事,想起這道面試題,乾脆去研究了下,不說了上代碼:
 1 #-*-coding:utf-8-*-
 2 def split_new(stringstr, charstr):
 3     """
 4     :param stringstr: 要分割的串
 5     :param charstr: 按該串分割
 6     :return: 返回分割後的list
 7     """
 8     #stringstr = stringstr
 9     tempstr = []
10     lengstring = len(stringstr)#計算串的長度
11     lengchar = len(charstr)#計算分割符的長度
12     for i in range(lengstring):
13         index = stringstr.find(charstr)#找到第一個出現charstr的座標,若是沒有找到,find返回-1
14         if index == -1:
15             tempstr.append(stringstr)
16             return tempstr
17         else:
18             tempstr.append(stringstr[:index])#取第一次出現charstr(不包含charstr)的前面部分
19             stringstr = stringstr[index+lengchar:]#把第一次出現charstr(不包含charstr)的 後面部分 從新賦值給stringstr
20 
21 if __name__=="__main__":
22     print split_new("ABCDEFGAA@@ABCDEFGA@@ABCDEFG", "A")
##################################
預期結果:
C:\Python27\python.exe C:/Users/Administrator/PycharmProjects/ChenDejieWorkSpace/split_New.py
['', 'BCDEFG', '', '@@', 'BCDEFG', '@@', 'BCDEFG']
優勢是分割符能夠使用字符或者串都行尾聲:代碼沒法拷回,臨時回憶貼圖,有問題先感謝你們指導並留言!
相關文章
相關標籤/搜索