Python基本語法——列表、元組、字典、字符串

一、列表(List)

List(列表) 是 Python 中最通用的序列。列表是一個任意類型對象位置的相關有序集合,它沒有固定大小。不像字符串,其大小是可以變的,通過對偏移量進行賦值以及其他各種列表的方法進行調用,可以修改列表大小。

索引是從0開始而非1開始!!

列表中值的分割用變量[頭下標:尾下標],就可以截取相應的列表,從左到右索引默認“0”開始的,從右到左索引默認-1開始,下標可以為空表示取到頭或尾。可以對列表進行索引、切片等操作,看下面例子。

A=[1,'Hello RaQuant',3.14]

len(A)

3

print(A[-1])

3.14

A[0:-1]

[1, 'Hello RaQuant']

A+[2,3,"a"]

[1, 'Hello RaQuant', 3.14, 2, 3, 'a']

Python 的列表數據類型包含更多的方法。list.append(x) 把一個元素添加到列表的結尾。

list.append(x) 把一個元素添加到列表的結尾。

list.extend(L) 將一個給定列表中的所有元素都添加到另一個列表中。

list.insert(i, x) 在指定位置插入一個元素。第一個參數是準備插入到其前面的那個元素的索引,例如 a.insert(0, x) 會插入到整個列表之前,而 a.insert(len(a), x) 相當于 a.append(x)。

list.remove(x) 刪除列表中值為 x 的第一個元素。如果沒有這樣的元素,就會返回一個錯誤。

list.pop([i]) 從列表的指定位置刪除元素,并將其返回。如果沒有指定索引,a.pop() 返回最后一個元素。元素隨即從鏈表中被刪除。(方法中 i 兩邊的方括號表示這個參數是可選的,而不是要求你輸入一對方括號,這個經常會在 Python 庫參考手冊中遇到這樣的標記。)

list.index(x) 返回列表中第一個值為 x 的元素的索引。如果沒有匹配的元素就會返回一個錯誤。

list.count(x) 返回 x 在鏈表中出現的次數。

list.sort(cmp=None, key=None, reverse=False) 對列表中的元素進行排序(參數可以用來自定義排序方法,參考 sorted() 的更詳細的解釋)。

list.reverse() 就地倒排鏈表中的元素

del list[i] 有個方法可以從列表中按給定的索引而不是值來刪除一個子項:del 語句。它不同于有返回值的 pop() 方法。語句 del 還可以從列表中刪除切片或清空整個列表(我們以前介紹過一個方法是將空列表賦值給列表的切片)

A.append(888)

A

[1, 'Hello RaQuant', 3.14, 888]

A.remove(888)

A

[1, 'Hello RaQuant', 3.14]

二、字典(dictionary)

序列(或者列表)是以連續的整數為索引,與此不同的是,字典以”關鍵字”為索引,關鍵字可以是任意不可變類型,通常用字符串或數值。如果元組中只包含字符串和數字,它可以作為關鍵字,如果它直接或間接地包含了可變對象,就不能當做關鍵字。不能用列表做關鍵字,因為列表可以用索引、切割或者 append() 和 extend() 等方法改變。

字典是無序的鍵:值對 (key:value 對)集合,鍵必須是互不相同的(在同一個字典之內)。使用大括號創建一個空的字典:{}。初始化列表時,在大括號內放置一組逗號分隔的鍵:值對,這也是字典輸出的方式。

字典的主要操作是依據鍵來存儲和取值。

D={"A":12,"B":23,"C":34}

D

{'A': 12, 'B': 23, 'C': 34}

D={}

D['A']=12

D['B']=23

D['C']=34

D

{'A': 12, 'B': 23, 'C': 34}

常用的字典操作方法:

D.clear()刪除字典內所有元素

D.copy()返回一個字典的復制

D.fromkeys(seq,val)創建一個新字典,以序列seq中元素做字典的鍵,val為字典所有鍵對應的初始值

D.get(key, default=None)返回指定鍵的值,如果值不在字典中返回default值

D.has_key(key)如果鍵在字典dict里返回true,否則返回false

D.items()以列表返回可遍歷的(鍵, 值) 元組數組

D.keys()以列表返回一個字典所有的鍵

D.setdefault(key, default=None)和get()類似, 但如果鍵不存在于字典中,將會添加鍵并將值設為default

D.update(dict2)把字典dict2的鍵/值對更新到dict里

D.values()以列表返回字典中的所有值

D.pop(key)刪除一個鍵并返回它的值,類似于列表的pop,只不過刪除的是一個鍵不是一個可選的位置

del D[key]刪除鍵

D[key] = 42新增或修改鍵

注意事項:

序列運算無效,字典元素間是沒有順序的概念

對新索引賦值會添加項

鍵不一定總是字符串

三、元組(Tuple)

元組在實際應用中不如前面兩種多,但左右一種重要的數據結構還是很有必要熟悉并掌握。

元組數據特點:

任意對象的有序集合 元組與字符串和列表類似,是一個位置有序的對象的集合(也就是其內容維持從左到右的順序)。與列表相同,可以嵌入到任何類別的對象中。

通過偏移存取 通過偏移而不是鍵來訪問,例如可以使用索引,切片

屬于不可變序列類型 不能在原處修改(因為他們是不可變的),但可以進行組合和復制,運算后會生成一個新的元組。

創建元組:

tup1=()

tup2=(520,)

tup3=(12,34)

tup=('a','b','c')

調用:

tup3[0]

12

修改元組:

元組中的元素值是不允許修改的,但我們可以對元組進行連接組合,如:

tup5=tup3+tup

tup5

(12, 34, 'a', 'b', 'c')

刪除元組:

元組中的元素值是不允許刪除的,但我們可以使用del語句來刪除整個元組

del tup2

Python 的元組數據類型包含更多的方法。

tup.index(x, [start, [stop]])) 返回元組中start到stop索引中第一個值為 x 的元素在整個列表中的索引。如果沒有匹配的元素就會返回一個錯誤。

tup.count(x) 返回 x 在元組中出現的次數。

cmp(tuple1, tuple2) 比較元組中兩個元素。

len(tuple) 計算元組元素個數。

max(tuple) 返回元組中元素最大值。

min(tuple) 返回元組中元素最小值。

tuple(seq) 將列表轉換為元組。

元組不提供字符串、列表和字典中的方法。如果相對元組排序,通常先得將它轉換為列表并使其成為一個可變對象,才能獲得使用排序方法,或使用sorted內置方法。

四、字符串

字符串可以用''或者""括起來表示。

如果字符串本身包含'怎么辦?比如我們要表示字符串 I'm OK ,這時,可以用" "括起來表示,同理,如果字符串包含",我們就可以用' '括起來表示:

"I'm OK"

'Learn "Python" in imooc'

如果字符串既包含'又包含"怎么辦?此時,就需要對字符串的某些特殊字符進行“轉義”,Python字符串用\進行轉義。要表示字符串 Bob said "I'm OK".由于 ‘ 和 ” 會引起歧義,因此,我們在它前面插入一個\表示這是一個普通字符,不代表字符串的起始,因此,這個字符串又可以表示為:

'Bob said \"I\'m OK\".'

注意:轉義字符 \ 不計入字符串的內容中。要計算str包含多少個字符,可以用len()函數:

>>> len('ABC')

3

>>> len('中文')

2

下面介紹一個使用頻率比較高的字符串處理功能:格式化。

我們經常會輸出類似'親愛的xxx你好!你xx月的話費是xx,余額是xx'之類的字符串,而xxx的內容都是根據變量變化的,所以,需要一種簡便的格式化字符串的方式。在Python中,用%來實現字符串的格式化,舉例如下:

>>> 'Hello, %s' % 'world'

'Hello, world'

>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)

'Hi, Michael, you have $1000000.'

在字符串內部,%s表示用字符串替換,%d表示用整數替換,有幾個%?占位符,后面就跟幾個變量或者值,順序要對應好。如果只有一個%?,括號可以省略。如果你不太確定應該用什么,%s永遠起作用,它會把任何數據類型轉換為字符串:

>>> 'Age: %s. Gender: %s' % (25, True)

'Age: 25. Gender: True'

有些時候,字符串里面的%是一個普通字符怎么辦?這個時候就需要轉義,用%%來表示一個%:

>>> 'growth rate: %d %%' % 7

'growth rate: 7 %'

如果一個字符串包含很多需要轉義的字符,對每一個字符都進行轉義會很麻煩。為了避免這種情況,我們可以在字符串前面加個前綴 r ,表示這是一個 raw 字符串,里面的字符就不需要轉義了。例如:

r'\(~_~)/ \(~_~)/'

但是r'...'表示法不能表示多行字符串,如果要表示多行字符串,可以用'''...'''表示:

'''Line 1

Line 2

Line 3'''

字符串可以用+號連接起來,用*號重復:

>>> word = 'Help' + 'A'

>>> word

'HelpA'

>>> '<' + word*5 + '>'

''

>>>

字符串可以象在C 中那樣用下標索引,字符串的第一個字符下標為0,(注:這里用到了list列表切片處理):

>>> word[4]

'A'

>>> word[0:2]

'He'

>>> word[2:4]

'lp'

>

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,546評論 6 533
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,570評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,505評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,017評論 1 313
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,786評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,219評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,287評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,438評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,971評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,796評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,995評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,540評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,230評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,662評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,918評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,697評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,991評論 2 374

推薦閱讀更多精彩內容