Python學習筆記——Python數據類型

  • 1.列表
    • 1.1取單個值
    • 1.2切片獲取子列表
    • 1.3用len()函數獲取列表長度
    • 1.4列表的循環
    • 1.5列表的鏈接和復制
    • 1.6列表的增、刪、查
    • 1.7列表的排序——sort()方法
  • 2.字符串
    • 2.1 字符串的表示
    • 2.2 下標和切片
    • 2.3 in和not in 操作
    • 2.4 常用字符串方法
    • 2.5 pyperclip模塊 —— 拷貝粘貼字符串
  • 3.元組tuple
    • 3.1 概念
    • 3.2 列表和原子互相轉換類型
  • 4.字典
    • 4.1 字典的特性
    • 4.2 添加一個新的鍵值對
    • 4.3 查找
    • 4.4 循環
  • 5.copy模塊

1. 列表

“列表”是一個值,術語“列表值”指的是列表本身,而不是指列表值之內的那些值。
列表值看起來像這樣:['cat','bat','rat','elephant']

列表中的值也稱為“表項”。表項用逗號分隔。

列表值本身包含多個值。[]是一個空列表,不包含任何值。

1.1 取單個值/修改值

利用下標來取值,eg:list[index] 取列表list第index+1個值
修改單個值即 list[index] = newvar

負數下標

雖然下標從0開始并向上增長,但也可以用負整數作為下標。整數值?1指的是列表中的最后一個下標,?2指的是列表中倒數第二個下標,以此類推。

1.2 切片獲取子列表

“切片”可以從列表中取得多個值,結果是一個新列表。切片輸入在一對方括號中,像下標一樣,但它有兩個冒號分隔的整數。spam[1:4]是一個列表的切片。在一個切片中,++第一個整數是切片開始處的下標。第二個整數是切片結束處的下標。切片向上增長,直至第二個下標的值,但不包括它。++

>>> spam = ['cat', 'bat', 'rat', 'elephant'] 
>>> spam[ 0: 4] 
['cat', 'bat', 'rat', 'elephant'] 
>>> spam[ 1: 3] 
['bat', 'rat'] 
>>> spam[ 0:- 1]
['cat', 'bat', 'rat']
>>> spam[: 2]
['cat', 'bat'] 
>>> spam[ 1:] 
['bat', 'rat', 'elephant'] 
>>> spam[:] 
['cat', 'bat', 'rat', 'elephant']

也可以利用切片修改列表某一段的值:

list = [1,2,3,4,5]
list[1:2] = [3, 1]

1.3 用len()函數獲取列表長度

list=[1,2,3,4]
len(list)

1.4 列表的循環

  • 常見迭代
for i in [1,2,3,4] 
    print(1)
  • 下標迭代
list[1,2,3,4]
for i in rang(len(list))
    print(list[i])

1.5 列表的鏈接和復制

+操作符可以連接兩個列表,得到一個新列表。*操作符可以用于一個列表和一個整數,實現列表的復制。

list = [1,2,3,4]
linkList = list + [5,6,7,8]
copyList = list * 2
print(linkList)
print(copyList)

得到:

1,2,3,4,5,6,7,8

1,2,3,4,1,2,3,4

1.6 列表的增、刪、查

1.6.1 插入

  • append()方法

    在列表末尾添加一個新值

  • insert() 方法

    在列表任意下標處添加一個新值list.insert(index, var)

1.6.2 刪除值

  • del關鍵字

    list = [1,2,3,4]
    del list[0]
    print(list)
    

    得到:
    2,3,4

  • remove()方法

    list.remove(var)
    

    刪除不存在的值會導致ValueError錯誤,若同一個值存在多次,只有第一次出現的值會被刪除

1.6.3 查找

  • in和not in

    'a' in ['a','b','c','d']
    

    得到True

    'a' not in ['a','b','c','d']
    

    得到False

  • index()方法

    index()方法傳入一個值,如果該值存在于列表中,就返回它的下標。如果該值不在列表中,Python就報ValueError。

1.7 列表的排序——sort()方法

spam=[2,5,3.14,1,-7]
spam.sort()
print(spam)
spam=['ants','cats','dogs','badgers','elephants']
spam.sort()
print(spam)

得到:
[-7,1,2,3.14,5]
['ants','badgers','cats','dogs','elephants']

也可以指定reverse關鍵字參數為True,讓sort()按逆序排序

spam.sort(reverse=True)
print(spam)

得到:
['elephants','dogs','cats','badgers','ants']

注意

  • sort()方法對原列表排序。不要寫出spam=spam.sort()這樣的代碼,試圖記錄返回值。
  • 其次,不能對既有數字又有字符串值的列表排序,因為Python不知道如何比較它們。
  • sort()方法對字符串排序時,使用“ASCII字符順序”,而不是實際的字典順序。即大寫字母排在小寫字母之前。
    spam=['Alice','ants','Bob','badgers','Carol','cats']
    spam.sort()
    print(spam)
    
    得到
    ['Alice','Bob','Carol','ants','badgers','cats']
    如果需要按照普通的字典順序來排序,就在sort()方法調用時,將關鍵字參數key設置為str.lower。
    spam=['a','z','A','Z']
    spam.sort(key=str.lower)
    >>>spam['a','A','z','Z']
    

2. 字符串

字符串和列表很相似對于列表的許多操作也可以用于字符串:按下表取值、切片、for循環、len()、in和not in。

字符串是不可變的數據類型,如果對字符串的某一個字符重新賦值,將會報TypeError錯誤。

2.1 字符串的表示

以單引號開始單引號結束,或以雙引號開始雙引號結束。

  • 轉義字符:\
    字符串中的特殊符號如:'、" 可以用',"表示
  • 原始字符串
    在字符串開頭加r,使之變為原始字符串,原始字符串忽略所有轉義字符
    print(r'That\'s a cat')
    
    輸出為:That's a cat
  • 多行字符串:三個引號包裹字符串 \
    s = """Dear Alice, 
    Eve's cat has been arrested for catnapping, cat burglary, and extortion. 
    Sincerely,
    Bob
    """
    
    多行字符串也常用作多行注釋(#表示單行注釋),即定義一個無引用的多行字符串。

2.2 下標和切片

字符串像列表一樣,可以使用下標和切片。

2.3 in和not in 操作

像列表一樣,in和not in操作也可以用于符串。

2.4 常用字符串方法

  • upper() 返回一個新字符串,小寫字母被替換為大寫字母。
  • lower() 返回一個新字符串,大寫字母被替換為小寫字母。
  • isupper() 是否所有字母都是大寫。
  • islower 是否所有字母都是小寫。
  • isalpha() 是否字符串只包含字母,并且非空。
  • isalnum() 是否字符串只包含字母和數字,并且非空。
  • isdecimal() 是否字符串只包含數字字符,并且非空。
  • isspace() 是否字符串只包含空格、制表符和換行,并且非空。
  • istitle() 是否字符串僅包含以大寫字母開頭、后面都是小寫字母的單詞。
  • startswith(str) 是否以str開頭。
  • endswith(str) 是否以str結束。
  • str.join(list) 返回list拼接而成的字符串,在每個元素之間插入str。
  • split(str) 與join方法相反,返回一個列表,str可以不傳,默認以空白字符分割,
  • rjust(len, char)、ljust(len,char)、center(len,char)對齊文本。分別表示右對齊、左對齊和居中放置于長度為len的字符串中。char指char類型,即單個字符;可以不傳char,不傳填充空字符,傳char填充char。
    >>> "Hello world".ljust(20)
    'Hello world         '
    >>> "Hello world".rjust(20)
    '         Hello world'
    >>> "Hello world".center(20)
    '    Hello world     '
    >>> "Hello world".ljust(20,"=")
    'Hello world========='
    >>> "Hello world".rjust(20,"=")
    '=========Hello world'
    >>> "Hello world".center(20,"=")
    '====Hello world====='
    
  • strip()、rstrip()、 lstrip()刪除空白字符。返回一個新的字符串,stip()刪除開頭結尾的空白字符。rstrip()和了lstrip()分別刪除左邊和右邊的空白字符。
    >>> "     Hello world     ".strip()
    'Hello world'
    >>> "     Hello world     ".lstrip()
    'Hello world     '
    >>> "     Hello world     ".rstrip()
    '     Hello world'
    >>> "     Hello world     **".rstrip("*")
    '     Hello world     '
    >>> "     Hello world     **".rstrip("**")
    '     Hello world     '
    >>> "     Hello world     **".rstrip("**8")
    '     Hello world     '
    >>> "     Hello world     **".rstrip("**8**")
    '     Hello world     '
    >>> "     Hello world     **".rstrip("-=")
    '     Hello world     **'
    >>> "     Hello world     **".rstrip("-=*")
    '     Hello world     '
    >>> "     Hello world    = *-*=".rstrip("-=*")
    '     Hello world    = '
    
    

2.5 pyperclip模塊 —— 拷貝粘貼字符串

pyperclip模塊有copy()和paste()函數,可以向計算機的剪貼板發送文本,或從它接收文本。

3. 元組tuple

3.1 概念

除了以下兩點,元組于列表幾乎一樣:

  • 元組輸入時用(),而不是[];
  • 元組是不可變的。因為不可變,使用元組比使用列表更快

注意
如果元組只有一個值,可以再括號內值的后面跟一個",",告訴Python這是一個元組

3.2 列表和原子互相轉換類型

使用list() 和 tuple()函數來轉換類型

list = [1,2,3,4]
tuple = (1,2,3,4)
listCopy = lis(tuple)
tupleCopy = tuple(list)

4. 字典

“字典”是許多值的集合。字典的索引被稱為“鍵”,鍵及其關聯的值稱為“鍵-值”對。在代碼中,字典輸入時帶花括號{}。

myCat={'size':'fat','color':'gray','disposition':'loud'}

通過鍵值開訪問這些值:

>>>myCat[color]
gray

4.1 字典的特性

  • 鍵-值對是無序的。

    因此輸入的順序并不重要,也無法像列表一樣切片。
  • 嘗試訪問字典中不存在的鍵,將導致KeyError。
  • 可以用任意值做為鍵

4.2 添加一個新的鍵值對

dic[newKey] = newValue

4.3 查找

4.3.1 字典方法:keys()、values()、items()

有3個字典方法,返回類似列表的值,keys()返回鍵、values()返回值、items()返回鍵-值對。這些方法返回的值不是真正的列表,它們不能被修改,沒有append()方法。但這些數據類型(分別是dict_keys、dict_values和dict_items)可以用于for循環。

4.3.2 關鍵字in

  • 查看某個值是都作為鍵存在于字典中
    birthdays={'Alice':'Apr1','Bob':'Dec12','Carol':'Mar4'} 
    print('Alice' in birthdays)
    
    birthdays={'Alice':'Apr1','Bob':'Dec12','Carol':'Mar4'} 
    print('Alice' in birthdays.key())
    
  • 查看某個值是都作為值存在于字典中
    birthdays={'Alice':'Apr1','Bob':'Dec12','Carol':'Mar4'} 
    print('Dec12' in birthdays.values())
    

4.3.3 get() 方法

get(key,default):獲取key對應的值嗎,如果不存在,返回default。

4.3.4 setdefault() 方法

setdefault('color', 'white')
為某一鍵設置默認值,沒有時使用該默認值

4.4 循環

myCat = {'color':'red','name':'Kitty','age':'1'}
for k, v in myCat:
    print('Key:' + str(k) + " Value:" + str(v))

5. copy模塊

  • 淺拷貝
import copy
list = [1,4,5,6]
copyList = copy.copy(list)
  • deepcopy

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

推薦閱讀更多精彩內容

  • 本節要介紹的是Python里面常用的幾種數據結構。通常情況下,聲明一個變量只保存一個值是遠遠不夠的,我們需要將一組...
    小黑y99閱讀 65,207評論 0 9
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,776評論 18 139
  • 1. Python 變量類型 變量存儲在內存中的值。這就意味著在創建變量時會在內存中開辟一個空間。基于變量的數據類...
    張松貴閱讀 395評論 0 0
  • 《殺不死我的必使我強大》史蒂芬?約瑟夫 塞翁失馬,焉知福禍。創傷逆境可成長,這是一本寫給心靈遭受過重創的人的書。 ...
    中山艮民閱讀 2,818評論 0 1
  • 【1】 時隔多年,再見到韓涵的時候,是在我的大學校園。那時我教育實習剛剛結束,閑著無聊,就隨意在學校里瞎轉悠。走到...
    貓牌的橡皮閱讀 1,010評論 2 2