在本教程中,您將學習可在Python中使用的不同數(shù)據(jù)類型。
Python中的每個值都有一個數(shù)據(jù)類型。由于在Python編程中一切都是對象,因此數(shù)據(jù)類型實際上是類,而變量是這些類的示例(對象)。
Python中有多種數(shù)據(jù)類型。下面列出了一些重要的類型。
整數(shù)、浮點數(shù)和復數(shù)都屬于Python數(shù)字的范疇。在Python中,它們被定義為 int、float 和 complex類。
我們可以使用type()函數(shù)來判斷一個變量或值屬于哪個類。同樣地,isinstance() 函數(shù)用于檢查對象是否屬于特定的類。
a = 5 print(a, "的類型是 ", type(a)) a = 2.0 print(a, "的類型是 ", type(a)) a = 1+2j print(a, "是復數(shù)嗎?", isinstance(1+2j,complex))
輸出量
5 的類型是 <class 'int'> 2.0 的類型是 <class 'float'> (1+2j) 是復數(shù)嗎? True
整數(shù)可以是任意長度,但受可用內(nèi)存的限制。
浮點數(shù)最多可精確到 15 個小數(shù)位。整數(shù) 和 浮點由小數(shù)點分隔。1 是整數(shù),1.0 是浮點數(shù)。
復數(shù)以 x + yj 形式書寫,其中x是實部,y是虛部。這里有些示例。
>>> a = 1234567890123456789 >>> a 1234567890123456789 >>> b = 0.1234567890123456789 >>> b 0.12345678901234568 >>> c = 1+2j >>> c (1+2j)
注意,float變量b被截斷了。
列表是項目的有序序列。它是Python中最常用的數(shù)據(jù)類型之一,非常靈活。列表中的項目允許不是同一類型。
聲明列表非常簡單。用逗號分隔的項目放在方括號內(nèi)[ ]。
a = [1, 2.2, 'python']
我們可以使用切片運算符 [ ] 從列表中提取一個項目 或 一系列項目。注意,在Python中,索引從 0 開始。
a = [5,10,15,20,25,30,35,40] # a[2] = 15 print("a[2] = ", a[2]) # a[0:3] = [5, 10, 15] print("a[0:3] = ", a[0:3]) # a[5:] = [30, 35, 40] print("a[5:] = ", a[5:])
輸出量
a[2] = 15 a[0:3] = [5, 10, 15] a[5:] = [30, 35, 40]
列表是可變的,也就是說,列表元素的值可以更改。
a = [1, 2, 3] a[2] = 4 print(a)
輸出量
[1, 2, 4]
元組(Tuple)是項目的有序序列,與列表(List)相同。唯一的區(qū)別是元組是不可變的。元組一旦創(chuàng)建就不能修改。
元組用于寫保護數(shù)據(jù),通常比列表快,因為它們不能動態(tài)更改。
它在括號內(nèi) () 定義,其中各項之間用逗號分隔。
t = (5,'program', 1+3j)
我們可以使用切片運算符 [] 提取項目,但不能更改其值。
t = (5,'program', 1+3j) # t[1] = 'program' print("t[1] = ", t[1]) # t[0:3] = (5, 'program', (1+3j)) print("t[0:3] = ", t[0:3]) #產(chǎn)生錯誤 #元組是不可變的 t[0] = 10
輸出量
t[1] = program t[0:3] = (5, 'program', (1+3j)) Traceback (most recent call last): File "test.py", line 11, in <module> t[0] = 10 TypeError: 'tuple' object does not support item assignment
字符串是Unicode字符的序列。我們可以使用單引號或雙引號來表示字符串。可以使用三引號 ''' 或 """ 來表示多行字符串。
s = "This is a string" print(s) s = '''A multiline string''' print(s)
輸出量
This is a string A multiline string
就像列表和元組一樣,切片運算符 [ ] 可以與字符串一起使用。但是,字符串是不可變的。
s = 'Hello world!' # s[4] = 'o' print("s[4] = ", s[4]) # s[6:11] = 'world' print("s[6:11] = ", s[6:11]) #發(fā)生錯誤 #字符串在Python中是不可變的 s[5] ='d'
輸出量
s[4] = o s[6:11] = world Traceback (most recent call last): File "<string>", line 11, in <module> TypeError: 'str' object does not support item assignment
Set 是唯一項的無序集合。Set 由用大括號 { } 括起來,并由逗號分隔的值的集合。集合中的項目是無序的。
a = {5,2,3,1,4} # 輸出set集變量 print("a = ", a) # 輸出a的數(shù)據(jù)類型 print(type(a))
輸出量
a = {1, 2, 3, 4, 5} <class 'set'>
我們可以在兩個集合上執(zhí)行集合操作,例如 并集,交集。集具有唯一值。他們消除重復。
a = {1,2,2,3,3,3} print(a)
輸出量
{1, 2, 3}
由于 set 是無序集合,因此索引沒有意義。因此,切片運算符 [] 不起作用。
>>> a = {1,2,3} >>> a[1] Traceback (most recent call last): File "<string>", line 301, in runcode File "<interactive input>", line 1, in <module> TypeError: 'set' object does not support indexing
字典是 鍵值對 的無序集合。
當我們擁有大量數(shù)據(jù)時,通常使用它。字典針對檢索數(shù)據(jù)進行了優(yōu)化。我們必須知道檢索值的密鑰。
在Python中,大括號 {} 內(nèi)定義了字典,每一項都是形式為 key:value 。鍵 和 值 可以是任何類型。
>>> d = {1:'value','key':2} >>> type(d) <class 'dict'>
我們可以使用鍵來檢索相應的值。
d = {1:'value','key':2} print(type(d)) print("d[1] = ", d[1]); print("d['key'] = ", d['key']); #產(chǎn)生錯誤 print("d[2] = ", d[2]);
輸出量
<class 'dict'> d[1] = value d['key'] = 2 Traceback (most recent call last): File "<string>", line 9, in <module> KeyError: 2
我們可以通過使用不同類型的轉換功能,例如不同的數(shù)據(jù)類型之間進行轉換 int(),float(),str() 等。
>>> float(5) 5.0
從float 到 int的轉換將截斷該值(使其接近零)。
>>> int(10.6) 10 >>> int(-10.6) -10
字符串之間的轉換必須包含兼容的值。
>>> float('2.5') 2.5 >>> str(25) '25' >>> int('1p') Traceback (most recent call last): File "<string>", line 301, in runcode File "<interactive input>", line 1, in <module> ValueError: invalid literal for int() with base 10: '1p'
我們甚至可以將一個序列轉換為另一序列。
>>> set([1,2,3]) {1, 2, 3} >>> tuple({5,6,7}) (5, 6, 7) >>> list('hello') ['h', 'e', 'l', 'l', 'o']
要轉換為字典,每個元素必須成對:
>>> dict([[1,2],[3,4]]) {1: 2, 3: 4} >>> dict([(3,26),(4,44)]) {3: 26, 4: 44}