Python 中的 sequence 类型
在查看Python 內置的幫助文檔的時候, 我發現其對函數的定義def是如下形式的.
duplicated( subset: 'Hashable | Sequence[Hashable] | None' = None, keep: "Literal['first'] | Literal['last'] | Literal[False]" = 'first' ) -> 'Series' method of pandas.core.frame.DataFrame instance可見函數對其中的輸入變量進行了類型解釋, 如subset被解釋使用Hashable或Sequence[Hashable]或None類型. 我很好奇Hashable和Sequence[Hashable]代表了什么. 本文以sequence 類型為例首先進行解釋.
其實, Python 中的 sequence 類型是幾種數據類型的總稱。這些類型的共同點是集合中的元素是有序排列的。本文詳細介紹 sequence 中各種類型的共同點。
概述
sequence 類型有 list 、 tuple 和 str 三類。
- list 類型是最常見的 sequence 類型,對應了其他語言(比如javascript)中的 array 類型。
- tuple 是 list 類型的immutable版本
- str 類型也是immutable
list 類型介紹
list 的底層保存的是指向內容的引用。
tuple 類型介紹
tuple 對象一經生成,其中的元素便不可更改。
str 類型介紹
字符串使用單引號或者雙引號括起來的字符序列。也是immutable的。如果三個連續的單引號或者雙引號,則表示一個長字符串,其中的換行符(\n)無需轉義。比如:
print("""This is a long string""")sequence 類型的共同用法
下列的用法可以用于 sequence 的任一類型:
尋址
[i]
方括號用來表示尋址。?S[i]?返回?S?中第?i?個元素。
若?i?是負數,則表示從尾部開始,或者可以理解為坐標值?i加上序列長度的結果,意思是:
S[ i ] = S[ len(S)+i ] ,當 -len(S)<=i<0
比如:
>>> range(10)[-2] 8 >>> range(10)[10-2] 8 >>> range(10)[-3] 7 >>> range(10)[10-3] 7 >>> range(10)[-10] 0 >>> range(10)[10-10] 0切片
[m:n:i]
尋址的高級用法是切片 Slicing 。?S[m:n:i]?返回?S?中第?m?個元素開始,每隔?i?個元素,直到?n-1?為止的子集。比如:
>>> range(10)[1:8:2] [1, 3, 5, 7] >>>若不提供?i?,則?i?默認為1
>>> range(10)[1:8] [1, 2, 3, 4, 5, 6, 7] >>>若m或者n是負數,則按照尋址表示:
>>> range(10)[-8:-1] [2, 3, 4, 5, 6, 7, 8]若不提供m或者n中的一個,則表示從到尾部結束或者從頭部開始:
>>> range(10)[4:] [4, 5, 6, 7, 8, 9] >>> range(10)[:4] [0, 1, 2, 3] >>>若m和n均不提供,則表示一個原始 sequence 的復制品:
>>> range(10)[:] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]級聯
+
sequence 的加法 “+” 被重載為級聯動作:
>>> (1,2,3)+(4,5,6) (1, 2, 3, 4, 5, 6) >>>重復
*
sequence 的乘法 “*” 被重載為復制動作:
>>> "abc "*3 'abc abc abc ' >>>判斷成員身份
in
sequence 類型都支持?in?操作,以判斷某個元素是否在集合內部。
>>> "c a" in ("abc "*3) True >>>sequence 類型支持的函數
元素個數
len()
len(S)?函數返回序列 S 的元素個數
元素的極值
min( ), max( )
min(S)?函數返回序列 S 的中最小元素,?max(S)?函數返回序列 S 的中最大元素。
>>> min("ABC") 'A' >>> max("aBC") 'a' >>>尋找元素
index( )
S.index(a)?法函數返回對象 S 的元素 a 第一次出現的位置,例如:
>>> "aaaa".index('a') 0 >>>統計元素出現次數
count( )
S.count(a)?方法函數返回對象 S 的元素 a 出現的次數,例如:
>>> [[1],[1],[1]].count([1]) 3總結
以上是生活随笔為你收集整理的Python 中的 sequence 类型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 初出茅庐的SwapX为何可以对垒Unis
- 下一篇: Python案例3—计算基础代谢率V_1