切片操作:Python列表/字符串切片怎麼寫?實例演示

切片操作是Python中處理序列(如列表、字符串等)時非常常用的技巧,它能幫我們快速截取序列的一部分內容,就像從蛋糕上切下一塊一樣方便。本文用最簡單的方式講解切片的語法和實例,讓你輕鬆掌握這個Python小技能。

一、切片的基本語法

切片的語法格式是:序列[start:end:step],其中三個參數的含義如下:
- start:起始位置的索引(包含該位置的元素),默認值爲 0(從序列開頭開始)。
- end:結束位置的索引(不包含該位置的元素),默認值爲序列的長度(到序列結尾結束)。
- step:步長,即每次移動的距離。默認值爲 1(正方向取元素),也可以是負數(反方向取元素)。

重要提示:Python的索引從 0 開始,同時支持負數索引-1 表示最後一個元素,-2 表示倒數第二個,以此類推)。

二、核心參數與規則

  1. 左閉右開區間:切片包含 start 位置的元素,但不包含 end 位置的元素。例如 s[0:3] 取索引 0、1、2 的元素。
  2. 省略參數
    - 省略 start:默認從序列開頭開始(即 start=0)。
    - 省略 end:默認到序列結尾結束(即 end=序列長度)。
    - 省略 step:默認步長爲 1(正方向順序取元素)。
  3. 負數步長:當 step=-1 時,會從右向左取元素(即反轉序列)。

三、實例演示:字符串切片

假設字符串 s = "Python"(索引對應:0:P, 1:y, 2:t, 3:h, 4:o, 5:n),以下是常見場景:

1. 基本切片(指定 start 和 end)

  • s[0:2]:從索引0到2(不包含2),結果:'Py'
  • s[2:5]:從索引2到5(不包含5),結果:'tho'(t、h、o)

2. 省略 start 或 end

  • s[:3]:省略 start(默認0),到索引3(不包含3),結果:'Pyt'(P、y、t)
  • s[3:]:省略 end(默認到結尾),從索引3開始,結果:'hon'(h、o、n)
  • s[:]:省略 start 和 end,取整個字符串,結果:'Python'

3. 步長(step)控制間隔

  • s[::2]:步長2(每隔1個取1個),結果:'Pto'(P、t、o)
  • s[1::3]:從索引1開始,步長3,結果:'y o'(y、o)

4. 負數索引與反轉

  • s[-1]:負數索引(倒數第1個),結果:'n'
  • s[-3:]:從倒數第3個開始到結尾,結果:'hon'
  • s[::-1]:步長-1(反方向取整個字符串),結果:'nohtyP'(反轉)

四、實例演示:列表切片

列表與字符串的切片規則完全一致,區別僅在於序列內容是元素而非字符。假設列表 lst = [1,2,3,4,5,6]

1. 基本切片

  • lst[1:4]:從索引1到4(不包含4),結果:[2,3,4]

2. 步長與反轉

  • lst[::2]:步長2,取所有偶數位置元素,結果:[1,3,5]
  • lst[::-1]:反轉整個列表,結果:[6,5,4,3,2,1]

3. 負數索引與截取

  • lst[-2:]:取最後2個元素,結果:[5,6]
  • lst[1:-1]:從索引1到倒數第2個,結果:[2,3,4,5]

五、切片的特性與注意事項

  1. 切片返回副本:切片操作返回原序列的一個新副本,修改副本不會影響原序列。
   s = "Python"
   sub = s[1:3]  # sub = 'yt'
   sub = 'xy'    # 修改sub,原字符串s不變
  1. 列表的可變修改:列表是可變的,可通過切片賦值修改原列表。
   lst = [1,2,3,4]
   lst[1:3] = [5,6]  # 將索引1-3(不包含3)替換爲[5,6]
   print(lst)  # 輸出:[1,5,6,4]
  1. 避免錯誤
    - 步長不能爲0(會報錯);
    - 切片範圍超出索引時,Python會自動截斷(不報錯);
    - 字符串不可直接修改切片(需轉換爲列表)。

六、總結

切片操作是Python處理序列的核心技巧,記住以下關鍵點:
- 語法:[start:end:step],左閉右開區間;
- 索引:0開始,負數索引從末尾計數;
- 步長:1(正方向)或 -1(反方向);
- 靈活組合:省略參數、負數索引、步長控制,可實現截取、反轉、間隔取元素等需求。

通過多練習實例,你會發現切片操作既簡單又強大,能極大提升代碼效率!

小夜