Python split()分割函数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']
优点是分割符可以使用字符或者串都行

尾声:代码无法拷回,临时回忆贴图,有问题先感谢大家指导并留言!

posted on 2016-11-23 21:45  DJ的博客园  阅读(6224)  评论(1编辑  收藏  举报

导航