python 字符串反转

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值