我正在尋找一種向後打印字符串的方法,在google上快速搜索後,我發現此方法:在Python中反轉字符串
假設'a'是一個字符串變量。這將返回'a'字符串:
a[::-1]
任何人都可以解釋它是如何工作的?
我正在尋找一種向後打印字符串的方法,在google上快速搜索後,我發現此方法:在Python中反轉字符串
假設'a'是一個字符串變量。這將返回'a'字符串:
a[::-1]
任何人都可以解釋它是如何工作的?
誠然,[::]
是extended slice運營商。它可以讓你基本上,它通過指定你想要的[begin:end:step]這個元素來工作,並且它適用於所有序列。關於它的兩件巧妙的事情:
表示開始和結束,如果你給一個負數,它意味着從序列的末尾開始計數。例如,如果我有一個列表:
l = [1,2,3]
l[-1]
然後是3,l[-2]
是2,並且l[-3]
是1
對於step
參數,一個負數表示通過工作向後序列。因此,對於一個列表::
l = [1,2,3,4,5,6,7,8,9,10]
你可以寫l[::-1]
這基本上意味着使用-1步長,同時通過列表讀取。在填充開始和停止時,Python將「做正確的事情」,以便它向後遍歷列表並給你[10,9,8,7,6,5,4,3,2,1]
。
我給出了列表的例子,但字符串只是另一個序列,並以相同的方式工作。所以a[::-1]
意味着通過向後走過字符串來連接字符來構建字符串。
使用負向步進/步幅時,「正確的」可能會有點混亂。 [示例在這裏](http://stackoverflow.com/q/399067/936083)。 – Darthfett 2012-03-07 22:49:54
這就是所謂的切片符號在Python中,你可以閱讀更多一點它是如何工作在這裏:
「-1」部分表示切片的「step」部分 - 在這種情況下,它一次經過字符串1字符,但是向後(負的步驟意味着從字符串的末尾開始) 。例如,如果將步驟指定爲2,則會從第一個字符開始,獲取字符串的其他任何字符。如果你指定了一個-2的步長,那麼你會得到字符串的其他所有字符,從最後一個字符開始並向後工作。
因此,概括地說,如果a = '12345'
:
a[::2]
成爲135
a[::-1]
成爲54321
a[::-2]
成爲531
它使用擴展切片 - 一個字符串,是一個序列在Python中,並與其他序列共享一些方法(na mely列表和元組)。有三部分切片 - 開始,停止和步驟。它們都有默認值 - 默認值爲0,默認爲len(sequence),step默認值爲1.通過指定[:: - 1],你會說「從頭開始的所有元素,到最後一次後退一會。
此功能在Python 2.3.5介紹,你可以在What's New docs閱讀更多。
[:: - 1]給出了字符串a的一部分。完整的語法是a[begin:end:step]
它給出了一個[begin],一個[begin + step],... a [end-1]。如果步驟是否定的,則從頭開始並開始。
最後,開始默認爲序列的開始,結束並且步進到-1。
一個字符串本質上是一個字符序列,所以切片操作對它起作用。你正在做的事實上是:
- >從1開始到結尾以1爲單位逐步得到一片'a'。
我認爲有以下使得在反向打印字符串多一點感覺,但也許這只是我:
for char in reversed(myString):
print(char, end = "")
那是'end =「」'的意思嗎? – 2009-04-19 23:52:04
這是python 3在每次打印結束時都不換行的方式。 在python 2.x中,你可以直接寫 print(char,) – 2009-04-20 02:06:22
我會做這樣的:
variable = "string"
message = ""
for b in variable:
message = b+message
print (message)
和它打印: gnirts
考慮下面的列表
l=[12,23,345,456,67,7,945,467]
逆轉名單另一種技巧可能是:
l[len(l):-len(l)-1:-1] [467, 945, 7, 67, 456, 345, 23, 12]
l[:-len(l)-1:-1] [467, 945, 7, 67, 456, 345, 23, 12]
l[len(l)::-1] [467, 945, 7, 67, 456, 345, 23, 12]
我們可以利用追加和流行做
def rev(s):
i = list(s)
o = list()
while len(i) > 0:
o.append(t.pop())
return ''.join(o)
它的基本步符號,考慮的功能:
一個[ 2:4:2]
會發生什麼情況是索引在位置2和4之間切片,第三個變量的作用是設置從第第一價值。在這種情況下,它會返回一個[2],因爲[4]是一個上限,只有兩個值返回並且沒有第二步發生。 ( - )減號運算符簡單地反轉步驟輸出。
不使用逆轉或[:: - 1],這裏是一個基於遞歸一個簡單的版本,我認爲是最可讀:
def reverse(s):
if len(s)==2:
return s[-1] + s[0]
if len(s)==1:
return s[0]
return s[-1] + reverse(s[1:len(s)-1]) + s[0]
**請seealso **:HTTP://計算器.com/a/33457266/42223,它解決了python的這個特性,有些人可能會發現「古怪」。 – dreftymac 2015-12-02 11:08:40