python slice类型_复合类型Slice python中的list
# GO types Slice
### Author 品茶
> Slice(切片)代表變長的序列,序列中每個元素都具有相同的類型,slice類型寫成[]T,T代表slice中元素的類型,slice的語法和數組很像
> 只是沒有固定長度而已。
> slice的底層引用一個數組對象,三部分組成:指針、長度(len)、容量(cap),指針指向第一個slice元素對應的底層數組元素的地址,
> 注意slice的第一個元素并不一定就是數組的第一個元素(有可能是切片后的)。
> 長度不能超過容量,容量一般是從slice的開始位置到底層數據的結尾位置。
> 長度:實際元素個數
> 容量:最大可裝載的元素個數,超過則對前一個容量*2
多個slice之間可以共享底層的數據,并且引用的數組部分區間可能重疊
~~~
func main() {
// 定義一個數組
months := [...]string{
1: "January",
2: "February",
3: "March",
4: "Aprill",
5: "May",
6: "June",
7: "july",
8: "August",
9: "September",
10: "October",
11: "November",
12: "December",
}
// 定義一個slice是不需要指定長度的,指定了就是數組
//s := []int{0,1,2,3,4} // 這是slice定義
//s1 := [...]int{0,1,2,3,4} // 數組定義
//s2 := [3]int{1,2,3} // 數組定義
// 切片操作 s[i:j] 0 <= i <= j <= cap(s)
Q1 := months[1:4]
Q2 := months[4:7]
Q3 := months[7:10]
Q4 := months[10:]
Summmer := months[6:9]
fmt.Println(Q2, Q4)
fmt.Println(Q1, Q3)
fmt.Println(Summmer[:20])
// slice不支持直接比較,還是一樣需要調用bytes.Equal來進行比較。因為是對底層類型的間接引用(淺拷貝),還是指針值的修改。所以不方便比較
// append 向slice追加元素 注意重新分配內存和copy操作 cap = cap * 2
}
~~~
總結
以上是生活随笔為你收集整理的python slice类型_复合类型Slice python中的list的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 美光 9400 NVMe 固态硬盘 SS
- 下一篇: 美图CEO内部信:全员发放激励股票 总部