pytho序列,字串,元組 學習筆記

2021-07-15 17:12:00 字數 3976 閱讀 2335

python string.zfill() 方法/函式:墊零左側的字串,以填補寬度。

python 序列操作

seq[ind]  獲得下標為 ind 的元素

seq[ind1:ind2]  獲得下標從 ind1 到 ind2 間的元素集合

seq * expr   序列重複 expr 次

seq1 + seq2  連線序列 seq1 和 seq2

obj in seq  判斷 obj 元素是否包含在 seq 中

obj not in seq  判斷 obj 元素是否不包含在 seq 中

1.連線操作符( + )

這個操作符允許我們把乙個序列和另乙個相同型別的序列做連線。語法如下:

sequence1 + sequence2

*對字串來說,這個操作不如把所有的子字串放到乙個列表或可迭代物件中,然後呼叫乙個 join方法來把所有的內容連線在一起節約記憶體;類似地,對列表來說,我們推薦讀者用列表型別的extend()方法來把兩個或者多個列表物件合併

2.切片操作符 ( , [:], [::] )

sequence[index]

可以使用負索引,範圍是 -1 到序列的負長度,-len(sequence), -len(sequence) <= index <= -1.正負索引的區別在於正索引以序列的開始為起點,負索引以序列的結束為起點.

因為 python 是物件導向的,所以你可以像下面這樣直接訪問乙個序列的元素(不用先把它

賦值給乙個變數):

>>> print ('faye', 'leanna', 'daylen')[1]

leanna

sequence[starting_index:ending_index]

*sequence[0:3]==sequence[:3] (一端可省略)

sequence[starting_index:ending_index:step]

以下是幾個例子:

>>> s = 'abcdefgh'

>>> s[::-1]  # 可以視作"翻轉"操作

'hgfedcba'

>>> s[::2]  # 隔乙個取乙個的操作

'aceg'

*切片索引的語法要比簡單的單一元素索引靈活的多。開始和結束素引值可以超過字串的長度。

>>> ('faye', 'leanna', 'daylen')[-100:100]

('faye', 'leanna', 'daylen')

>>> for i in [none] + range(-1, -len(s), -1):

...     print "s[:%s]" % (i)

...     print s[:i]

...

s[:none]

abcdef

s[:-1]

abcde

s[:-2]

abcd

s[:-3]

abcs[:-4]

abs[:-5]

a**用 none 作為索引值,這樣一來就可以滿足你的需要,比如說,在你想用乙個變數作為索引來從第乙個到遍歷最後乙個元素的時候:

字串*python 裡面單引號和雙引號的作用是相同的

>>> astring = 'hello world!'  # 使用單引號

>>> anotherstring = "python is cool!" # 使用雙引號

>>> print astring  # print 不帶引號的 hello world!

>>> anotherstring  # 不是進行 print 操作,帶有引號

'python is cool!'

>>> s = str(range(4))  # 把乙個列表轉換成乙個字串

>>> s

'[0, 1, 2, 3]'

常用的內建函式:cmp(),len(), max(), min()

raw_input()

sort()和reverse():正排序和倒排序

>>> music_media

['compact disc', 45, '8-track tape', 'long playing record']

>>> music_media.sort()

>>> music_media

[45, '8-track tape', 'compact disc', 'long playing record']

>>> music_media.reverse()

>>> music_media

['long playing record', 'compact disc', '8-track tape', 45]

**在使用可變物件的方法如 sort(),extend()和 reverse()的時候要注意,這些操作會在列表中原地執行操作,也就是說現有的列表內容會被改變,但是沒有返回值!

字串方法有返回值

>>> 'leanna, silly girl!'.upper()

'leanna, silly girl!'

**不可變物件的方法是不能改變它們的值的,所以它們必須返回乙個新的物件.

***元組和列表相比有乙個很重要的區別,元組是一種不可變型別

> atuple = (123, 'abc', 4.56, ['inner', 'tuple'], 7-9j)

>>> anothertuple = (none, 'something to see here')

>>> print atuple

(123, 'abc', 4.56, ['inner', 'tuple'], (7-9j))

>>> print anothertuple

(none, 'something to see here')

>>> emptiestpossibletuple = (none,)

>>> print emptiestpossibletuple

(none,)

>>> tuple('bar')

('b', 'a', 'r')

訪問元組中的值,切片, [:], [::]

跟數字和字串一樣,元組也是不可變型別,就是說你不能更新或者改變元組的元素

通過現有字串的片段再構造乙個新字串的方式解決的,對元組同樣。

刪除乙個單獨的元組元素是不可能的,可以通過切片,拼接後賦給乙個新的元組。

元組可以在兩端加入元素:

>>> c = tuple('d') + a

>>> c

('d', 'd', 'u', 'c', 'h')

>>>

>>> t = t + ('fifth', 'sixth')

>>> t

('third', 'fourth', 'fifth', 'sixth')

在中間加:

>>> a[:1] + ('hello',) + a[1:]

('d', 'hello', 'u', 'c', 'h')

>>>

核心筆記:列表 vs 元組

乙個經常會被問到的問題是,"為什麼我們要區分元組和列表變數?"這個問題也可以被表述為「我們真的需要兩個相似的序列型別嗎?」,乙個原因是在有些情況下,使用其中的一種型別要優於使用另一種型別。

最好使用不可變型別變數的乙個情況是,如果你在維護一些敏感的資料,並且需要把這些資料傳遞給乙個並不了解的函式(或許是乙個根本不是你寫的 api),作為乙個只負責乙個軟體某一部分的工程師,如果你確信你的資料不會被呼叫的函式篡改,你會覺得安全了許多。 乙個需要可變型別引數的例子是,如果你在管理動態資料集合時。你需要先把它們建立出來,逐漸地或者不定期的新增它們,或者有時還要移除一些單個的元素。這是乙個必須使用可變型別物件的典型例子。幸運的是,通過內建的 list()和 tuple()轉換函式,你可以非常輕鬆的在兩者之間進行轉換.

Python學習筆記 元組 字串 序列

一 元組 1 建立 如圖,除了temp4是int型,其餘的都成功建立了元組,其中te 是建立空元組的方法,若想建立只有乙個元素的元組可以用temp6的方法。2 元組tuple和列表list很相似,索引 切片和操作符的使用都基本相同,但增刪操作不同。因為tuple不支援修改 是不可變型別,若想修改,只...

字串,元組,列表

共異點 字串列表 元組拼接 a 1 b 2 a b a 1 b 2 a b a 1 b 2 a b 重複a 1 a 3 a 1 3 元組不可以重複 索引sr 123 sr 1 li 1 2 li 0 tp 1 2 tp 0 切片sr 123 sr 0 2 li 1 2 li 0 1 tp 1 2 t...

列表 元組 字串

容器資料型別 列表元組 字串1 列表 列表是有序集合,沒有固定大小,能夠儲存任意數量任意型別的 python 物件,語法為 元素1,元素2,元素n 關鍵點是 中括號 和 逗號 中括號 把所有元素綁在一起 逗號 將每個元素一一分開 2 元組 元組 定義語法為 元素1,元素2,元素n 小括號把所有元素綁...