2013-10-21 75 views
1

有人告訴我,你可以扭轉一個字符串,像這樣:爲什麼我們可以像這樣寫一個字符串:str = str [:: - 1]?

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

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

+1

[Python's slice notation]的可能重複(http://stackoverflow.com/questions/509211/pythons-slice-notation) – Bucket

+0

這個問題的表述方式對於那些沒有聽過這個術語的人來說是有意義的「切片符號」,所以我不認爲它是完全重複的。 – bouteillebleu

回答

4

利用Python的slice notation。基本上,它返回一個新的字符串,通過在原始字符串中後退來創建。請參見下面的演示:

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

的切片表示法的格式爲[start:stop:step]

2

第三個參數是步長。嘗試一些不同的步長,才能認識

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

自啓動和停止留空,Python會選擇它們沿着整個字符串步驟。

+0

想你,我得到它! –

2

在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] 

字符串實現相同的迭代協議的列表,這樣,而不是逆轉元素你是在一個字符串的字符反轉的列表。

相關問題