zoukankan      html  css  js  c++  java
  • python字符串反转

    实现字符串反转的方法有很多,这里我简单介绍一些常用的。

    1)字符串切片:

    >>> s = '123456'
    >>> print(s[::-1])
    654321

    这种方式最简单,效率最高,是我最推荐的方法。当然这里的切片并不是字符串独有的,列表也可以,实际上我们认为字符串是特殊的列表。

    >>> s = '123456'
    >>> list(s)[::-1]
    ['6', '5', '4', '3', '2', '1']
    >>> print(''.join(list(s)[::-1]))
    654321

    2)借助列表的reverse():

    >>> s = '123456'
    >>> ls = list(s)
    >>> ls.reverse()
    >>> ls
    ['6', '5', '4', '3', '2', '1']
    >>> print(''.join(ls))
    654321

    3)使用reduce()函数:

    这里要注意python版本问题,如果是python 2,那么reduce()是一个内置函数,可以直接使用;但是在python 3,reduce()从内置函数移除了,放入了functools模块,因此需要从functools中导入。这里我使用的是python 3:

    >>> s = '123456'
    >>> from functools import reduce
    >>> reduce(lambda x,y:y+x,s)
    '654321'
    >>> reduce(lambda x,y:x+y,s)
    '123456'

    大家有没有发现两次reduce有什么不同。没有的话我们再看两个例子就明白了:

    >>> a = [1,2,3,4]
    >>> reduce(lambda x,y:y+x,a)
    10
    >>> reduce(lambda x,y:x+y,a)
    10

    首先lambda定义一个匿名函数,它有两个参数x和y,第一次是计算y+x,第二次是计算x+y。

    reduce() 函数会对参数序列中元素进行累积。函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。

    因此,上面两种结果的不同其实是reduce()的迭代对象发生了变化导致,对于数字列表而言前后并没有区别,但是字符串就不同了,当迭代对象是字符串时,'+'号不再是加号,而是连接符,这就是为什么x+y和y+x得到相反结果的原因所在。

  • 相关阅读:
    面试随缘刷题--day7
    面试随缘刷题--day6
    面试随缘刷题--day5
    面试随缘刷题--day4
    面试随缘刷题--day3 二分专题
    Python 将普通图片转字符画
    相离的圆(排序+二分查找)
    Java利用图灵机器人接口实现简单的聊天程序
    正整数分组(动态规划)
    循环数组最大子段和(动态规划)
  • 原文地址:https://www.cnblogs.com/marvin-wen/p/11888400.html
Copyright © 2011-2022 走看看