在Python中反转一个字符串

lie*_*ewl 34 python string slice

我正在寻找一种向后打印字符串的方法,在谷歌上快速搜索之后,我发现了这种方法:

假设'a'是一个字符串变量.这将向后返回'a'字符串:

a[::-1]
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释这是如何工作

Ric*_*and 73

当然,这[::]扩展切片操作符.它允许你采取子串.基本上,它通过指定哪些元素作为[begin:end:step]来工作,它适用于所有序列.关于它的两个巧妙的事情:

  • 你可以省略一个或多个元素,它做"正确的事"
  • 开始,结束和步骤的负数有意义

对于开始和结束,如果给出负数,则表示从序列的末尾开始计数.例如,如果我有一个列表:

l = [1,2,3]
Run Code Online (Sandbox Code Playgroud)

然后l[-1]是3,l[-2]是2,l[-3]是1.

对于step参数,负数表示在序列中向后工作.所以对于一个清单::

l = [1,2,3,4,5,6,7,8,9,10]
Run Code Online (Sandbox Code Playgroud)

您可以编写l[::-1]哪些基本上意味着在阅读列表时使用步长-1.填写开始和停止时,Python将"做正确的事",因此它会向后遍历列表并为您提供[10,9,8,7,6,5,4,3,2,1].

我已经给出了带有列表的示例,但字符串只是另一个序列并以相同的方式工作.所以a[::-1]意味着通过在字符串中向后走来加入你得到的字符来构建一个字符串.


hbw*_*hbw 7

"-1"部分代表切片的"步骤"部分 - 在这种情况下,它一次遍历字符串1字符,但是向后(负步骤意味着从字符串的结尾开始).例如,如果将步骤指定为2,则会从第一个字符开始获取字符串的每个其他字符.如果指定步长为-2,那么您将获得该字符串的所有其他字符,从最后一个字符开始并向后工作.

因此,简而言之,如果a = '12345':

  • a[::2]135
  • a[::-1]54321
  • a[::-2]531


Ste*_*all 6

我认为以下对于反向打印字符串更有意义,但也许这只是我:

for char in reversed( myString ):  
  print( char, end = "" )
Run Code Online (Sandbox Code Playgroud)

  • 这是在每次打印结束时不进行换行的python 3方法。在python 2.x中,您可以只写print(char,) (2认同)