用Python反转字符串

用Python反转字符串

没有内置的reverse函数用于Python的str对象。实现此方法的最佳方法是什么?

如果提供一个非常简洁的答案,请详细说明它的效率。例如,是否str对象被转换为不同的对象等。


芜湖不芜
浏览 901回答 4
4回答

30秒到达战场

不如:>>> 'hello world'[::-1]'dlrow olleh'这是扩展切片语法。它通过做[begin:end:step]-通过离开开始和结束并指定一个步骤-1,它将反转一个字符串。

潇湘沐

@Paolo‘ss[::-1]是最快的;一种较慢的方法(可能更易读,但这一点值得商榷)是''.join(reversed(s)).

翻阅古今

快速回答(TL;DR)例### example01 -------------------mystring  =   'coup_ate_grouping'backwards =   mystring[::-1]print backwards### ... or even ...mystring  =   'coup_ate_grouping'[::-1]print mystring### result01 -------------------'''gnipuorg_eta_puoc'''详细答复背景提供这一答复是为了解决@odigity引起的以下关切:哇。一开始我对保罗提出的解决方案感到震惊,但当我读到第一条评论时,我对这种恐惧退避三舍:“那是非常重要的节奏曲。干得好!”我感到非常不安,一个如此聪明的社区认为使用如此神秘的方法来做一些如此基本的事情是个好主意。为什么不只是.反向()?问题语境Python2.xPython 3.x设想:开发人员希望转换一个字符串。转换是反转所有字符的顺序。解example 01生成所需的结果,使用扩展切片表示法.陷阱开发人员可能会期望类似的string.reverse()土生土长的习语毕多尼“)新开发人员可能无法阅读解决方案开发人员可能会尝试实现他或她自己的版本。string.reverse()以避免切片表示法。在某些情况下,切片表示法的输出可能违反直觉:print 'coup_ate_grouping'[-4:]    ## => 'ping'相比较print 'coup_ate_grouping'[-4:-1]  ## => 'pin'相比较print 'coup_ate_grouping'[-1]  ## => 'g'例如,见实例02。索引的不同结果[-1]可能会让一些开发人员理据Python有一个特殊的情况需要注意:字符串是可迭代类型。排除string.reverse()方法是鼓励python开发人员充分利用这种特殊环境的力量。简单地说,这意味着字符串中的每个单独字符都可以很容易地作为元素顺序排列的一部分来操作,就像其他编程语言中的数组一样。要理解这是如何工作的,回顾一下示例02可以提供一个很好的概述。第02条### example02 -------------------## start (with positive integers)print 'coup_ate_grouping'[0]  ## => 'c'print 'coup_ate_grouping'[1]  ## => 'o' print 'coup_ate_grouping'[2]  ## => 'u' ## start (with negative integers)print 'coup_ate_grouping'[-1]  ## => 'g'print 'coup_ate_grouping'[-2]  ## => 'n' print 'coup_ate_grouping'[-3]  ## => 'i' ## start:end print 'coup_ate_grouping'[0:4]    ## => 'coup'    print 'coup_ate_grouping'[4:8]    ## => '_ate'    print 'coup_ate_grouping'[8:12]   ## => '_gro'    ## start:end print 'coup_ate_grouping'[-4:]    ## => 'ping' (counter-intuitive)print 'coup_ate_grouping'[-4:-1]  ## => 'pin'print 'coup_ate_grouping'[-4:-2]  ## => 'pi'print 'coup_ate_grouping'[-4:-3]  ## => 'p'print 'coup_ate_grouping'[-4:-4]  ## => ''print 'coup_ate_grouping'[0:-1]   ## => 'coup_ate_groupin'print 'coup_ate_grouping'[0:]     ## => 'coup_ate_grouping' (counter-intuitive)## start:end:step (or start:end:stride)print 'coup_ate_grouping'[-1::1]  ## => 'g'   print 'coup_ate_grouping'[-1::-1] ## => 'gnipuorg_eta_puoc'## combinationsprint 'coup_ate_grouping'[-1::-1][-4:] ## => 'puoc'结语这个认知负荷与理解python中的片表示法是如何工作相关的,对于一些不愿投入大量时间学习这种语言的采用者和开发人员来说,这确实是太过了。然而,一旦基本原理被理解,这种方法相对于固定的字符串操作方法的威力可能是相当有利的。对于那些不这样认为的人,有其他方法,例如lambda函数、迭代器或简单的一次性函数声明。如果需要的话,开发人员可以实现她自己的字符串.反向()方法,但是了解python这方面的基本原理是很好的。另见交替简单方法交替简单方法片表示法的交替解释
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python