Python基礎之五大資料型別
學習一門語言,往往都是從Hello World開始。 但是筆者認為,在一個黑框框中輸出一個“你好,世界”並沒有什麼了不起,要看透事物的本質,熟悉一門語言,就要了解其底層,就是我們常常說的基礎。本篇從python中的變數型別開始。
五大標準資料型別
在記憶體中儲存的資料可以有多種型別。
例如, 一個人的名字可以用字元來儲存, 年齡可以用數字來儲存, 愛好可以用集合來儲存等等。
Python有五個標準的資料型別:
- Numbers(數字)
- String(字串)
- List(列表)
- Tuple(元組)
- Dictionary(字典)
其中屬於集合型別的資料型別有 列表、元組及字典
0x00. 數字(Numbers)
數字資料型別用於儲存數值。
他們是不可改變的資料型別,這意味著改變數字資料型別會分配一個新的物件。
當你指定一個值時,Number物件就會被建立:
1 2 |
var1
=
1
var2
= 2
|
del語句刪除一些物件的引用,其語法是:
1 |
del
var1[,var2[,var3[....,varN]]]]
|
通過使用del語句可以刪除單個或多個物件的引用。例如:
1 2 |
del
var1
del
var1, var2
|
四種不同的數字型別:
- int(有符號整型)
- long(長整型[也可以代表八進位制和十六進位制])
- float(浮點型)
- complex(複數)
a. int(整型)
在32位機器上,整數的位數為32位,取值範圍為-2**31~2**31-1,即-2147483648~2147483647
在64位系統上,整數的位數為64位,取值範圍為-2**63~2**63-1,即-9223372036854775808~9223372036854775807
b. long(長整型)
跟C語言不同,Python的長整數沒有指定位寬,即:Python沒有限制長整數數值的大小,但實際上由於機器記憶體有限,長整數數值不可能無限大。
注意,自從Python2.2起,如果整數發生溢位,Python會自動將整數資料轉換為長整數,所以如今在長整數資料後面不加字母L也不會導致嚴重後果了。
c. float(浮點型)
浮點數用來處理實數,即帶有小數的數字。類似於C語言中的double型別,佔8個位元組(64位),其中52位表示底,11位表示指數,剩下的一位表示符號。
d. complex(複數)
複數由實數部分和虛數部分組成,一般形式為x+yj,其中的x是複數的實數部分,y是複數的虛數部分,這裡的x和y都是實數。
注:Python中存在小數字池:-5 ~ 257
小整數物件——小整型物件池
在實際程式設計中,數值比較小的整數,比如1,2,29等,可能會非常頻繁的出現。而在python中,所有的物件都存在於系統堆上。想想?如果某個小整數出現的次數非常多,那麼Python將會出現大量的malloc/free操作,這樣大大降低了執行效率,而且會造成大量的記憶體碎片,嚴重影響Python的整體效能。
在Python2.5乃至3.3中,將小整數位於[-5,257)之間的數,快取在小整型物件池中。
0x01. 字串(String)
字串或串(String)是由數字、字母、下劃線組成的一串字元。
它是程式語言中表示文字的資料型別。
Python的字串列表有2種取值順序:
- 從左到右索引預設0開始的,最大範圍是字串長度少1
- 從右到左索引預設-1開始的,最大範圍是字串開頭
如果你要實現從字串中獲取一段子字串的話,可以使用變數 [頭下標:尾下標],就可以擷取相應的字串,其中下標是從 0 開始算起,可以是正數或負數,下標可以為空表示取到頭或尾。
比如:
1 |
s
=
'i love python'
|
s[2:6]的結果是love。(顧頭不顧尾,或左閉右開)
操作例項:
1 2 3 4 5 6 7 8 |
str
=
'Hello World'
print
(
str
)
#輸出完整字串
print
(
str
[
0
])
#輸出字串中的第一個字元
print
(
str
[
2
:
5
])
#輸出字串中第三個至第五個之間的字元
print
(
str
[
2
:])
#輸出從第三個開始到最後的字串
print
(
str
*
2
)
#輸出字串兩次
print
(
'say: '
+
str
)
#輸出連線的字串
|
0x02. 列表(List)
List(列表) 是 Python 中使用最頻繁的資料型別。
列表可以完成大多數集合類的資料結構實現。List裡面的資料型別也可以不同,它支援字元,數字,字串甚至可以包含列表(所謂巢狀)。
操作例項:
1 2 3 4 5 6 7 8 9 |
list
=
[
'apple'
,
'jack'
,
798
,
2.22
,
36
]
otherlist
=
[
123
,
'xiaohong'
]
print
(
list
)
#輸出完整列表
print
(
list
[
0
])
#輸出列表第一個元素
print
(
list
[
1
:
3
])
#輸出列表第二個至第三個元素
print
(
list
[
2
:])
#輸出列表第三個開始至末尾的所有元素
print
(otherlist
*
2
)
#輸出列表兩次
print
(
list
+
otherlist)
#輸出拼接列表
|
0x03. 元組(Tuple)
元組用"()"標識。
內部元素用逗號隔開。但是元組一旦初始化,就不能修改,相當於只讀列表。
只有1個元素的tuple定義時必須加一個逗號 ,
,來消除歧義(否則會認為t只是一個數):
>>> t = (1,)
>>> t
(1,)
操作例項與列表相似
0x04. 字典(Dictionary)
字典(dictionary)是除列表以外Python之中最靈活的內建資料結構型別。列表是有序的物件結合,字典是無序的物件集合。
兩者之間的區別在於:字典當中的元素是通過鍵來存取的,而不是通過偏移存取。
字典用"{ }"標識。字典由索引(key)和它對應的值value組成。
操作例項:
1 2 3 4 5 6 7 8 9 10 |
dict
=
{}
dict
[
'one'
]
=
'This is one'
dict
[
2
]
=
'This is two'
tinydict
=
{
'name'
:
'john'
,
'code'
:
5762
,
'dept'
:
'sales'
}
print
(
dict
[
'one'
])
#輸出鍵為'one'的值
print
(
dict
[
2
])
#輸出鍵為2的值
print
(tinydict)
#輸出完整的字典
print
(tinydict.keys())
#輸出所有鍵
print
(tinydict.values())
#輸出所有值
|