python 切片(slice)解析
更新日期: 2024 年 11 月 16 日
Python 的切片(slice)
Python 的切片主要用來提取序列(如列表、字串)的子序列,不會改變原序列。
語法
sequence[start:stop:step]
start
:切片的開始索引,默認為0
。stop
:切片的結束索引(不包含stop
索引的值)。step
:切片的步長,默認為1
。
特點
- 不修改原序列:切片操作會返回一個新的序列。
- 適用於多種序列:列表、元組、字串等都可以使用切片。
範例
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 的切片行為一致)。
特點
- 不修改原陣列或字串:
slice
返回一個新的子陣列或子字串。 - 適用於陣列和字串:可以用來處理陣列或字串的子集提取。
範例
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 切片的不同之處
- 不支援步長(step):JavaScript 的
slice
無法像 Python 切片那樣設定步長,只能按連續索引提取。 - 只適用於陣列和字串:Python 的切片可以用於多種類型的序列(如元組),而 JavaScript 的
slice
只支援陣列和字串。
小結
Python 的切片語法和 JavaScript 的 slice
方法在功能上非常相似,尤其是在提取子序列(或子陣列、子字串)時。
但 Python 的切片語法更靈活,支援步長選項且適用於多種類型的序列,而 JavaScript 的 slice
方法則相對簡單,適合基本的子集提取需求。
兩者在處理數據時各有優勢,可以根據實際需求靈活選用。