python 切片(slice)解析

更新日期: 2024 年 11 月 16 日

Python 的切片(slice)

Python 的切片主要用來提取序列(如列表、字串)的子序列,不會改變原序列。

語法

sequence[start:stop:step]
  • start:切片的開始索引,默認為 0
  • stop:切片的結束索引(不包含 stop 索引的值)。
  • step:切片的步長,默認為 1

特點

  1. 不修改原序列:切片操作會返回一個新的序列。
  2. 適用於多種序列:列表、元組、字串等都可以使用切片。

範例

arr = [0, 1, 2, 3, 4, 5]
# 提取索引 1 到 4 的元素(不含索引 4)
print(arr[1:4])  # [1, 2, 3]

# 每隔一個元素取一次
print(arr[::2])  # [0, 2, 4]

# 逆序提取
print(arr[::-1])  # [5, 4, 3, 2, 1, 0]

與 Python 切片類似的 JavaScript 語法

JavaScript 的 slice 方法

JavaScript 中的 slice 方法與 Python 的切片語法非常相似,主要用來提取子陣列或字串,且不會修改原陣列或字串。

語法

array.slice(start, end)
  • start:起始索引(包含)。
  • end:結束索引(不包含,與 Python 的切片行為一致)。

特點

  1. 不修改原陣列或字串slice 返回一個新的子陣列或子字串。
  2. 適用於陣列和字串:可以用來處理陣列或字串的子集提取。

範例

let arr = [0, 1, 2, 3, 4, 5];
let slicedArr = arr.slice(1, 4);

console.log(slicedArr);  // [1, 2, 3]
console.log(arr);        // [0, 1, 2, 3, 4, 5](原陣列不變)

// 用於字串
let str = "abcdef";
let slicedStr = str.slice(1, 4);

console.log(slicedStr);  // "bcd"
console.log(str);        // "abcdef"(原字串不變)

與 Python 切片的不同之處

  1. 不支援步長(step):JavaScript 的 slice 無法像 Python 切片那樣設定步長,只能按連續索引提取。
  2. 只適用於陣列和字串:Python 的切片可以用於多種類型的序列(如元組),而 JavaScript 的 slice 只支援陣列和字串。

小結

Python 的切片語法和 JavaScript 的 slice 方法在功能上非常相似,尤其是在提取子序列(或子陣列、子字串)時。

但 Python 的切片語法更靈活,支援步長選項且適用於多種類型的序列,而 JavaScript 的 slice 方法則相對簡單,適合基本的子集提取需求。

兩者在處理數據時各有優勢,可以根據實際需求靈活選用。

Similar Posts