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