Python 为什么我们可以这样写来反转字符串:str=str[::-1]?

Python 为什么我们可以这样写来反转字符串:str=str[::-1]?,python,Python,有人告诉我你可以反转这样的字符串: a='123456' a = a[::-1] print a 我只是不知道它是如何工作的。这充分利用了Python的优点。基本上,它返回一个通过向后遍历原始字符串创建的新字符串。请参见下面的演示: >>> mystr = "abcde" >>> mystr[::-1] 'edcba' >>> for i in mystr[::-1]: ... print i ... e d c b a &

有人告诉我你可以反转这样的字符串:

a='123456'
a = a[::-1]
print a

我只是不知道它是如何工作的。

这充分利用了Python的优点。基本上,它返回一个通过向后遍历原始字符串创建的新字符串。请参见下面的演示:

>>> mystr = "abcde"    
>>> mystr[::-1]
'edcba'
>>> for i in mystr[::-1]:
...     print i
...
e
d
c
b
a
>>>

切片表示法的格式是利用Python的。基本上,它返回一个通过向后遍历原始字符串创建的新字符串。请参见下面的演示:

>>> mystr = "abcde"    
>>> mystr[::-1]
'edcba'
>>> for i in mystr[::-1]:
...     print i
...
e
d
c
b
a
>>>

切片表示法的格式是
[开始:停止:步长]

第三个参数是步长。尝试一些不同的步长来获得这个想法

>>> a = '123456'
>>> a[::2]
'135'
>>> a[::3]
'14'
>>> a[::-3]
'63'
>>> a[::-2]
'642'
>>> a[::-1]
'654321'

由于start和stop保留为空,Python将选择它们沿整个字符串进行步进。

第三个参数是步长。尝试一些不同的步长来获得这个想法

>>> a = '123456'
>>> a[::2]
'135'
>>> a[::3]
'14'
>>> a[::-3]
'63'
>>> a[::-2]
'642'
>>> a[::-1]
'654321'

由于start和stop保留为空,Python将选择它们来沿着整个字符串进行步进。

在Python中,负切片环绕,因此-1是最后一个元素

[1,2,3,4][-1] = 4
在切片表示法中,前两个元素是边界,第三个是索引增量。默认情况下,增量为1

[1,2,3,4,5][1:4] == [2,3,4]
[1,2,3,4,5][1:4:2] == [2,4]
Python还允许省略绑定索引以引用整个列表

[1,2,3,4,5][::1] == [1,2,3,4,5]
因此,如果增量为负数,则通过从末尾向后索引来反转列表

[1,2,3,4,5][::-1] == [5,4,3,2,1]

字符串实现了与列表相同的iterable协议,因此,不是反转列表中的元素,而是反转字符串中的字符。

在Python负切片中,因此-1是最后一个元素

[1,2,3,4][-1] = 4
在切片表示法中,前两个元素是边界,第三个是索引增量。默认情况下,增量为1

[1,2,3,4,5][1:4] == [2,3,4]
[1,2,3,4,5][1:4:2] == [2,4]
Python还允许省略绑定索引以引用整个列表

[1,2,3,4,5][::1] == [1,2,3,4,5]
因此,如果增量为负数,则通过从末尾向后索引来反转列表

[1,2,3,4,5][::-1] == [5,4,3,2,1]

字符串实现了与列表相同的iterable协议,因此,与其反转列表中的元素,不如反转字符串中的字符。

这个问题的可能重复部分的措辞对于没有听说过“切片表示法”这一术语的人来说是有意义的,所以我不认为这是一个完全重复的问题。这个问题的可能重复的措辞对一个没有听过“切片符号”这个术语的人来说是有意义的,所以我不认为这是一个完全重复的问题。想想你,我必须这样做!想想你,我一定要!