Python中數字、字符串、列表、元祖、字典和集合

注意:我使用的Python代碼版本一律是3.x

數字

Python 支持三種不同的數值類型:整型(Int)、浮點型(float) 、復數( (complex)) 。

注意:Python3 整型是沒有限制大小的,可以當作 Long 類型使用,所以 Python3 沒有 Python2 的 Long 類型。

可以使用十六進制和八進制來代表整數:
In [66]:number = 0xA0F # 十六進制表示,以0x開頭
In [67]:number
Out[67]: 2575
In [68]:number = 0o37 # 八進制表示,以0o開頭
In [69]:number
Out[69]: 31```

可以使用以下下方法進行數字類型轉換:
int(x)、float(x) 、complex(x)、complex(x, y)
In [71]:a = 1.0
In [72]:int(a) # 將a由浮點數轉換為整數
Out[72]: 1

進行數字運算:
In [74]: 17 / 3 # 注意這里計算會和Py2.x有所不同
Out[74]: 5.666666666666667
In [75]: 17 // 3 # 整數除法返回向下取整后的結果
Out[75]: 5
In [76]: 17 % 3 # %操作符返回除數的余數
Out[76]: 2
In [77]: 5 * 3 +2
Out[77]: 17```

等號(=)用于給變量賦值,可以使用 ** 操作來進行冪運算:
In [79]: width = 20
In [80]: height = 5*9
In [81]: width * height
Out[81]: 900
In [82]: 2 ** 7
Out[82]: 128

不同類型的數混合運算時會將整數轉換為浮點數:
In [83]: 3 * 3.75 / 1.5
Out[83]: 7.5

In [84]: 7.0 / 2
Out[84]: 3.5

<br />?<br />

字符串

字符串是 Python 中最常用的數據類型。我們可以使用引號('或")來創建字符串。

# 創建字符串:
In [85]: var1 = 'Hello World!'
In [86]: var2 = 'Runoob'

# 用切片來截取字符串:
In [87]: var1[0]
Out[87]: 'H'
In [88]: var2[1:5]
Out[88]: 'unoo'

# 對已存在的字符串進行修改:
In [89]: var1 = var1[:6] + 'Runoob!'
In [90]: var1
Out[90]: 'Hello Runoob!'

支持格式化字符串的輸出,最基本的用法是將一個值插入到一個有字符串格式符 %s 的字符串中。

In [91]: print ("我叫 %s 今年 %d 歲!" % ('小明', 10))
我叫 小明 今年 10 歲!

三引號允許一個字符串跨多行,字符串中可以包含換行符、制表符以及其他特殊字符。

In [93]: para_str = """這是一個多行字符串的實例
    ...: 多行字符串可以使用制表符
    ...: TAB ( \t )。
    ...: 也可以使用換行符 [ \n ]。
    ...: """
In [94]: print (para_str) # 這里要print出來,才會格式化輸出
這是一個多行字符串的實例
多行字符串可以使用制表符
TAB (    )。
也可以使用換行符 [ 
 ]。

關于unicode 字符串,在Python2中,普通字符串是以8位ASCII碼進行存儲的,而Unicode字符串則存儲為16位unicode字符串,這樣能夠表示更多的字符集。使用的語法是在字符串前面加上前綴 u。 在Python3中,所有的字符串都是Unicode字符串。
?
<br />?<br />

列表

列表是最常用的Python數據類型,它可以作為一個方括號內的逗號分隔值出現。列表的數據項不需要具有相同的類型。列表是一種有序的集合,可以隨時添加和刪除其中的元素。
訪問及刪除列表中的元素

In [96]: list1 = ['Google', 'Runoob', 1997, 2000]
In [97]: list1[0]
Out[97]: 'Google'

In [98]: list2 = [1, 2, 3, 4, 5, 6, 7 ]
In [99]: list2[1:5]
Out[99]: [2, 3, 4, 5]

In [100]: list = ['Google', 'Runoob', 1997, 2000]
In [101]: list
Out[101]: ['Google', 'Runoob', 1997, 2000]

In [102]: del list[2]
In [103]: list
Out[103]: ['Google', 'Runoob', 2000]

列表腳本操作符

In [104]: len([1,2,3]) # 求取列表長度
Out[104]: 3

In [105]: [1,2,3]+[4,5,6] # 對列表組合
Out[105]: [1, 2, 3, 4, 5, 6]

In [106]: ['hi']*4 # 重復列表中的元素
Out[106]: ['hi', 'hi', 'hi', 'hi']

In [107]: 3 in [1,2,3] # 元素是否存在于列表中
Out[107]: True

In [108]: for x in [1, 2, 3]: print (x) #  對列表元素進行迭代
1
2
3

列表截取

In [109]: L=['Google', 'Runoob', 'Taobao']

In [110]: L[2] # 讀取第三個元素
Out[110]: 'Taobao'

In [111]: L[-2] # 從右側開始讀取倒數第二個元素
Out[111]: 'Runoob'

In [112]: L[1:] # 輸出從第二個元素開始后的所有元素
Out[112]: ['Runoob', 'Taobao']

列表拼接與嵌套

In [113]: squares = [1, 4, 9, 16, 25]
In [114]: squares + [36, 49, 64, 81, 100] # 對列表進行拼接
Out[114]: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

In [115]: a = ['a', 'b', 'c']
In [116]: n = [1, 2, 3]
In [117]: x = [a, n] # 對列表進行嵌套
In [118]: x
Out[118]: [['a', 'b', 'c'], [1, 2, 3]]

In [119]: x[0]
Out[119]: ['a', 'b', 'c']
In [120]: x[0][1] # 類似于二維Numpy數組
Out[120]: 'b'

列表包含以下函數

len(list)    #列表元素個數
max(list)    #返回列表元素最大值
min(list)    #返回列表元素最小值
list(seq)    #將元組轉換為列表

列表包含以下方法

list.append(obj)    在列表末尾添加新的對象
list.count(obj)     統計某個元素在列表中出現的次數
list.extend(seq)    在列表末尾一次性追加另一個序列中的多個值(用新列表擴展原來的列表)
list.index(obj)     從列表中找出某個值第一個匹配項的索引位置
list.insert(index, obj)    將對象插入列表
list.pop(obj=list[-1])     移除列表中的一個元素(默認最后一個元素),并且返回該元素的值
list.remove(obj)           移除列表中某個值的第一個匹配項
list.reverse()             反向列表中元素
list.sort([func])          對原列表進行排序
list.clear()      清空列表
list.copy()       復制列表

<br />?<br />

元組

元組與列表類似,不同之處在于元組的元素不能修改。元組使用元括號,列表使用方括號。

#創建元組
In [121]: tup1 = (1, 2, 3, 4, 5)
In [122]: tup2 = 'a','b','c','d' 
In [123]: tup1
Out[123]: (1, 2, 3, 4, 5)
In [124]: tup2
Out[124]: ('a', 'b', 'c', 'd')

#創建空元組
In [125]: tup3 = ()
In [126]: tup3
Out[126]: ()

#元組中只包含一個元素時,需要在元素后面添加逗號
In [127]: tup = (50,)
In [128]: tup
Out[128]: (50,)

訪問及修改元組

In [129]: tup1 = ('Google', 'Runoob', 1997, 2000)
In [130]: tup2 = (1, 2, 3, 4, 5, 6, 7 )

In [131]: tup1[0]
Out[131]: 'Google'
In [132]: tup2[1:5]
Out[132]:  (2, 3, 4, 5)

In [135]: tup1 = (12, 34.56)
In [136]: tup2 = ('abc', 'xyz')
In [137]: tup3 = tup1 + tup2
In [138]: tup3
Out[138]: (12, 34.56, 'abc', 'xyz')
# tup1[0] = 100,根據索引賦值來修改元組元素操作是非法的。

#對元組中的列表元素修改是可以的。如下:
In [207]: t = (1,2,['a','b'])
In [208]: t 
Out[208]: (1, 2, ['a', 'b'])

In [209]: t[2][0] = 'c'
In [210]: t
Out[210]: (1, 2, ['c', 'b'])

刪除元組

#元組中的元素值是不允許刪除的,但我們可以使用del語句來刪除整個元組
In [140]: tup = ('Google', 'Runoob', 1997, 2000)
In [141]: tup
Out[141]: ('Google', 'Runoob', 1997, 2000)
In [142]:del tup #刪除整個元組,再打印會出現tup沒定義的提示

元組運算符

In [145]: len((1, 2, 3)) #求元組元素個數
Out[145]: 3

In [146]: (1, 2, 3) + (4, 5, 6) #對元組進行連接
Out[146]: (1, 2, 3, 4, 5, 6)

In [147]: ('Hi',) * 4 #對元組元素進行復制
Out[147]: ('Hi', 'Hi', 'Hi', 'Hi')

In [148]: 3 in (1, 2, 3) #判斷元素是否存在
Out[148]: True

In [149]: for x in (1, 2, 3): print (x) #對元組元素進行迭代
1
2
3

元組索引與截取

In [150]: L = ('Google', 'Taobao', 'Runoob')
In [151]: L[2]    #讀取第三個元素
Out[151]: 'Runoob'

In [152]: L[-2]    #反向讀取,讀取倒數第二個元素
Out[152]: 'Taobao'

In [153]: L[1:]    #截取元素,從第二個開始后的所有元素
Out[153]: ('Taobao', 'Runoob')

元組包含了以下內置函數

len(tuple)    計算元組元素個數。
max(tuple)    返回元組中元素最大值。
min(tuple)    返回元組中元素最小值。
tuple(seq)    將列表轉換為元組。

元組其他Tips

#獲取取item的索引,可以使用下面的遍歷方法
In [194]: for index in range(len(tuple1)):
     ...:     print (tuple1[index])
#運用內置函數enumerate來獲取對應的索引和元素
In [195]: for index, item in enumerate(tuple1):
     ...:     print ('%i, %s' % (index, item))

<br />?<br />

字典

字典是另一種可變容器模型,且可存儲任意類型對象。字典的每個鍵值(key=>value)對用冒號(:)分割,每個對之間用逗號(,)分割,整個字典包括在花括號({})中。鍵必須是唯一的,但值則不必。值可以取任何數據類型,但鍵必須是不可變的,如字符串,數字或元組

創建及訪問字典中的值

In [157]: dict3 = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}    #創建字典

In [158]: dict3['Name'] #通過字典中的鍵訪問對應的值
Out[158]: 'Runoob'
In [159]: dict3['Age']
Out[159]: 7

修改字典。向字典添加新內容的方法是增加新的鍵/值對。

In [160]: dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
In [161]: dict['Age'] = 8
In [162]: dict['School'] = '菜鳥教程'
#可以看到已做更改和增加
In [163]: dict
Out[163]: {'Age': 8, 'Class': 'First', 'Name': 'Runoob', 'School': '菜鳥教程'}

刪除字典元素、清空及刪除字典

In [172]: dict1 = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}

In [173]: del dict1['Name'] #刪除字典元素
In [174]: dict1.clear() #清空字典,但是字典還存在,只是是空的
In [175]: dict1
Out[175]: {}

In [176]: del dict1 #刪除字典,再輸出字典dict1會顯示未定義錯誤

字典鍵的特性

字典值可以沒有限制地取任何python對象,既可以是標準的對象,也可以是用戶定義的,但鍵不行。
特性有二:
1、字典值可以沒有限制地取任何python對象,既可以是標準的對象,也可以是用戶定義的,但鍵不行。
In [178]: dict = {'Name': 'Runoob', 'Age': 7, 'Name': '小菜鳥'}
In [179]: dict['Name']
Out[179]: '小菜鳥'

2、鍵必須不可變,所以可以用數字,字符串或元組充當,而用列表就不行,如下實例:
In [180]: dict = {['Name']: 'Runoob', 'Age': 7}
#這樣定義會顯示錯誤:TypeError: unhashable type: 'list'

字典內置函數&內置方法:

len(dict)       計算字典元素個數,即鍵的總數。
str(dict)       輸出字典以可打印的字符串表示。
type(variable)  返回輸入的變量類型,如果變量是字典就返回字典類


radiansdict.clear()        刪除字典內所有元素 
radiansdict.copy()         返回一個字典的淺復制
radiansdict.fromkeys()     創建一個新字典,以序列seq中元素做字典的鍵,val為字典所有鍵對應的初始值
radiansdict.get(key, default=None)    返回指定鍵的值,如果值不在字典中返回default值
key in dict            如果鍵在字典dict里返回true,否則返回false
radiansdict.items()    以列表返回可遍歷的(鍵, 值) 元組數組
radiansdict.keys()    以列表返回一個字典所有的鍵
radiansdict.setdefault(key, default=None) 和get()類似, 但如果鍵不存在于字典中,將會添加鍵并將值設為default
radiansdict.update(dict2)    把字典dict2的鍵/值對更新到dict里
radiansdict.values()         以列表返回字典中的所有值

<br />?<br />

集合

集合(set)是一個無序不重復元素的序列。基本功能是進行成員關系測試和刪除重復元素。

In [181]: student = ({'Tom', 'Jim', 'Mary', 'Tom', 'Jack', 'Rose'})
In [182]: student #可以發現重復的Tom刪除了
Out[182]: {'Jack', 'Jim', 'Mary', 'Rose', 'Tom'}

In [185]: a = set('abcabcef')
In [186]: b = set('abclmn')
In [187]: a
Out[187]: {'a', 'b', 'c', 'e', 'f'}
In [188]: b
Out[188]: {'a', 'b', 'c', 'l', 'm', 'n'}

#集合的一些運算
In [189]: a-b #a和b的差集
Out[189]: {'e', 'f'}
In [190]: a | b #a和b的并集
Out[190]: {'a', 'b', 'c', 'e', 'f', 'l', 'm', 'n'}
In [191]: a & b #a和b的交集
Out[191]: {'a', 'b', 'c'}
In [192]: a ^ b # a和b中不同時存在的元素
Out[192]: {'e', 'f', 'l', 'm', 'n'}

集合的其他操作

set.add(obj) # 添加新元素
#集合也存在不可變形式,frozenset為固定集合.
set3 = frozenset(list1) #創建一個固定集合,固定集合不能添加元素

# 刪除元素
set2.discard(6)   # 當元素不存在時,不會引發異常
set2.remove(6)    # 與discard的區別在于,如果沒有要刪除的元素,remove會引發一個異常
set2.pop()  # 因為set是無序的,所以pop會隨機的從set中刪除一個元素

set.update('python') #傳入的元素python拆分,做為個體傳入到集合中
set.remove('obj') #傳入的元素做為個體從集合中全部刪除

參考鏈接:
Python3 基本數據類型
Python入門筆記(11):集合

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

推薦閱讀更多精彩內容