python 字符串反转
第一种方式:
def rev1 (s): return s[::-1]
对于s[i:j]这种形式的切片,就不说了……关键是……还可以为切片指定一个步进值,即s[i:j:stride],这样生成的元素就是s[i], s[i+stride], s[i+stride*2]等,直到j为止(j可不包括喔)。
然后,当然步进值也可以是负的……然后有一点要说的是……当i被省略的时候,如果stride>0则默认置为序列的开始,当stride<0时则被置为序列的结尾;
而j被省略时,如果stride>0则置为序列的结尾,否则置为序列的开始。
所以……s[::-1]就相当于s[结尾:开头:-1]……具体可以看《python参考手册 中文(第四版)》第44-45页。。
>>> s="abcdefg" >>> s[::2] 'aceg' >>> s[::-2] 'geca' >>> s[5::-1] 'fedcba' >>> s[5:0:-1] 'fedcb' >>> s[:5:1] 'abcde' >>> s[5::1] 'fg'
第二种:
def rev2 (s): a = list(s) a.reverse() return ''.join(a)
这个呢……就是把字符串转成list,然后把list反转,最后在通过join把list连接成字符串……
第三种:
def rev3 (s): str0 = '' l = len(s)-1 while l >= 0: str0 += s[l] l -= 1 return str0
这个就是C风格了吧?
第四种:
def rev4 (s): return reduce(lambda x, y : y + x, s)
reduce(func,seq[,init]):func为二元函数,将func作用于seq序列的元素,每次携带一对(先前的结果以及下一个序列的元素),连续的将现有的结果和下一个值作用在获得的随后的结果上,最后减少我们的序列为一个单一的返回值:如果初始值init给定,第一个比较会是init和第一个序列元素而不是序列的头两个元素。【此部分转载http://blog.csdn.net/prince2270/article/details/4681299】
reduce的python实现:
>>> def reduce(bin_func,seq,initial=None): lseq = list(seq) if initial is None: res = lseq.pop(0) else: res = initial for eachItem in lseq: res = bin_func(res,eachItem) return res
转载请注明: 转载自http://jyd.me/
本文链接地址: python 字符串反转
- django 部署 apache mod_wsgi[windows]
- ImportError: No module named Tkinter