Python [:-1], [::-1], [n::-1]用法

Damon Chen
4 min readJun 12, 2021

--

List & String index rules

ListString的 index rules都相同

  • 從左到右, index從 0開始遞增
  • 從右到左, index從 -1開始遞減

[:-1], [::-1], [n::-1]用法

str[start:end] or list[start:end]

從 start到 end - 1

# String
str = "damon"
print(str[0:3]) # dam -> from 0 to 2
print(str[2:4]) # mo -> from 2 to 3
print(str[:-1]) # damo -> from 0 to -2
# List
list = ['d', 'a', 'm', 'o', 'n']
print(list[0:4]) # ['d', 'a', 'm', 'o'] -> from 0 to 3
print(list[2:5]) # ['m', 'o', 'n'] -> from 2 to 4
print(list[:-2]) # ['d', 'a', 'm'] -> from 0 to -3

Default value

  • start default value = 0, 即 str[:3]相當於 str[0:3]
  • enddefault value = len(str), 即 str[2:]相當於 str[2:len(str)]
  • start, end都為 default value, 即 str[:]相當於 str[0:len(str)], 表示複製一份 str
# String
str = "damon"
print(str[:3]) # dam -> from 0 to 2
print(str[2:]) # mon -> from 2 to 4
print(str[:]) # damon -> from 0 to 4
# List
list = ['d', 'a', 'm', 'o', 'n']
print(list[:4]) # ['d', 'a', 'm', 'o'] -> from 0 to 3
print(list[2:]) # ['m', 'o', 'n'] -> from 2 to 4
print(list[:]) # ['d', 'a', 'm', 'o', 'n'] -> from 0 to 4

str[start:end:step] or list[start:end:step]

Step正負的意義

  • step > 0, 從左到右
  • step < 0, 從右到左

Step value

  • 向左或向右 n步取一個值

Default value

  • startend 的 default value同 str[start:end], step default value = 1, 即 str[0:3:1]相當於 str[0:3]
  • step < 0時, start使用 default value, 預設為 -1, end使用 default value, 預設為 -len(str) - 1, 即 str[::-1]相當於 str[-1:-len(str) - 1:-1], 表示從最後一個 element到第一個 element複製一遍 (reverse)
# String
str = "damon"
print(str[::]) # damon -> from 0 to 4, step 1
print(str[::2]) # dmn -> from 0 to 4, step 2
print(str[::-1]) # nomad -> from -1 to -5, step -1
print(str[::-2]) # nmd -> from -1 to -5, step -2
print(str[2::-1]) # mad -> from 2(-3) to -5, step -1
# List
list = ['d', 'a', 'm', 'o', 'n']
print(list[2::2]) # ['m', 'n'] -> from 2 to 4, step 2
print(list[::-2]) # ['n', 'm', 'd'] -> from -1 to -5, step -2
print(list[::-3]) # ['n', 'a'] -> from -1 to -5, step -3
print(list[2::-1]) # ['m', 'a', 'd'] -> from 2(-3) to -5, step -1

--

--

Damon Chen
Damon Chen

No responses yet