python 字符串反转
转载请注明: 转载自http://jyd.me/
第一种方式:
def rev1(s):
returns[::-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连接成字符串……
第三种:
defrev3 (s):
str0=''
l=len(s)-1
whilel >=0:
str0+=s[l]
l-=1
returnstr0
这个就是C风格了吧?
第四种:
def rev4 (s):
return reduce(lambdax, 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 each Item in lseq:
res=bin_func(res,eachItem)
return res
转载请注明: 转载自http://jyd.me/
第一种方式:
def rev1(s):
returns[::-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连接成字符串……
第三种:
defrev3 (s):
str0=''
l=len(s)-1
whilel >=0:
str0+=s[l]
l-=1
returnstr0
这个就是C风格了吧?
第四种:
def rev4 (s):
return reduce(lambdax, 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 each Item in lseq:
res=bin_func(res,eachItem)
return res