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']
优点是分割符可以使用字符或者串都行
尾声:代码无法拷回,临时回忆贴图,有问题先感谢大家指导并留言!