天天看點

序列、切片

  • 序列是指:内容連續、有序,可使用下标索引的一類資料容器
  • 清單、元組、字元串,均可以可以視為序列
  • 切片
序列支援切片,即:清單、元組、字元串,均支援進行切片操作
切片:從一個序列中,取出一個子序列

文法:序列[起始下标:結束下标:步長]
表示從序列中,從指定位置開始,依次取出元素,到指定位置結束,得到一個新序列:
起始下标表示從何處開始,可以留白,留白視作從頭開始
結束下标(不含)表示何處結束,可以留白,留白視作截取到結尾
步長表示,依次取元素的間隔
  步長1表示,一個個取元素
  步長2表示,每次跳過1個元素取
  步長N表示,每次跳過N-1個元素取
  步長為負數表示,反向取(注意,起始下标和結束下标也要反向标記)        
  • 案例1
# 對list進行切片,從1開始,4結束,步長1
my_list = [0, 1, 2, 3, 4, 5, 6]
result1 = my_list[1:4]      # 步長預設是1,是以可以省略不寫
print(f"結果1:{result1}")

# 對tuple進行切片,從頭開始,到最後結束,步長1
my_tuple = (0, 1, 2, 3, 4, 5, 6)
result2 = my_tuple[:]     # 起始和結束不寫表示從頭到尾,步長為1可以省略
print(f"結果2:{result2}")

# 對str進行切片,從頭開始,到最後結束,步長2
my_str = "01234567"
result3 = my_str[::2]
print(f"結果3:{result3}")

# 對str進行切片,從頭開始,到最後結束,步長-1
my_str = "01234567"
result4 = my_str[::-1]          # 等同于将序列反轉了
print(f"結果4:{result4}")

# 對清單進行切片,從3開始,到1結束,步長-1
my_list = [0, 1, 2, 3, 4, 5, 6]
result5 = my_list[3:1:-1]
print(f"結果5:{result5}")

# 對元組進行切片,從頭開始,到尾結束,步長-2
my_tuple = (0, 1, 2, 3, 4, 5, 6)
result6 = my_tuple[::-2]
print(f"結果6:{result6}")      
  • 案例2
my_str = "萬過薪月,員序程馬黑來,nohtyP學"
# 倒序字元串,切片取出
result1 = my_str[::-1][9:14]
print(f"方式1結果:{result1}")

# 切片取出,然後倒序
result2 = my_str[5:10][::-1]
print(f"方式2結果:{result2}")

# split分隔","  replace替換"來"為空,倒序字元串
result3 = my_str.split(",")[1].replace("來", "")[::-1]
print(f"方式3結果:{result3}")