我有一個變數s="Siva"
,我嘗試使用邏輯進行切片
s[0:-5:-1]
根據切片的概念,我要向后走,所以理想情況下它應該從“S”開始,然后轉到“a”,“v”,“i” 但是當我嘗試運行它時,我得到的輸出為只有“S”,即使我嘗試使用 s[0:-100:-1] 它仍然顯示“S”。誰能解釋為什么會這樣?
uj5u.com熱心網友回復:
你在 s[0:-5:-1] 中給出的步數是 -1,這意味著字串切片會像 'a','v','i','S' 一樣反向。但是您從 s[0] 開始,即“S”,并且由于步數 -1,它將列印字串“Siva”中的前一個字符,但“S”之前沒有字符。這就是它停止的原因并且只列印'S'。如果你想要 s = "Siva" 的倒數,那么只需寫 s[::-1]。
uj5u.com熱心網友回復:
切片就是s[start:end:step]這樣,如果你想Savi你必須做
s[0] s[-1:0:-1]
- Start at -1 表示從字串的末尾開始。
- End at 0 表示在開頭結束,忽略第一個字符。
- 步驟 -1 意味著一次倒轉一個。
uj5u.com熱心網友回復:
實際上,切片[start:stop:step]在其語法中接受。您所說的[0, -5, -1]是“從索引 0 開始;前進到索引 -4(包括);并以 -1 的步長執行此操作”。
您的字串長度為 4,因此 index -4 實際上是 index 0:s[-4]將是'S'.
換句話說,你基本上是在說:“從索引 0 開始,在索引 0(包括)結束”,這就是為什么你只得到'S'。任何小于-5的東西,例如:-10,也會給你'S',只是因為沒有更遠的地方:它基本上與你嘗試做的事情相同s[0:100000:1]:你只會得到'Siva',因為您的字串是4<100000字符長,而 Python 在這種情況下的行為是只回傳所有四個(或者,更一般地說:在“迭代方向”中回傳盡可能多的字符,根據step引數的符號,在到達之前字串的結尾)。
另一方面,如果您嘗試大于-5 的值,例如 -2 甚至只是一個正數 3,您將得到一個空字串:那是因為您基本上是在說“從索引開始-4 并朝負方向前進,直到你達到更大的目標”——這從未預料到會發生,而且本質上有點“胡言亂語”,我猜 Python 選擇處理它的方式是只回傳一個空字串案例。
希望這是為了回答您“為什么會發生這種情況”的問題,同時給予一些直覺;當涉及到解決方案時,如果您想要簡單地抓住第一個字母然后反轉其余的:我只需使用s[0] s[-1:0:-1]. 為了好玩,我會注意到另一個選項是s[0] s[1:][::-1].
uj5u.com熱心網友回復:
切片與 [start:stop:step] 一起使用。如果您使用負數作為開始,它將從指定的索引開始,從末尾開始。
如果你想列印“Savi”,我認為你必須切片:
s="Siva"
s[0] s[-1::-1]
uj5u.com熱心網友回復:
也許你所期望的不能用字串切片來完成,但仍然可以用索引來完成。
>>> ''.join(s[i] for i in range(0,-5,-1))
'SaviS'
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/510276.html
標籤:Python细绳
上一篇:如何探索字串PYTHON的特性
