Python變數和資料型別

在本節中, 我們將來學習 Python中的變數和資料型別。

Python 變數:

變數是具有名稱和值 (一些資料) 的記憶體位置。

變數具有唯一的名稱, 以便來區分不同的記憶體位置。它們具有同識別符號相同的命名規則

在 Python 中, 在使用該變數之前不需要宣告變數 (指定資料型別)。如果要新建變數, 只需賦予該變數一個有效的名稱, 並使用賦值運算子為其賦值。變數的資料型別將根據分配給它的值的型別自動來定義。

變數賦值:

賦值運算子= 用於為變數分配數值。Python中,你可以為變數分配任何型別的值。

下面的程式碼是賦值運算子的例子,你可以將不同的資料類似賦值給變數。

x = 3
y = 4.124
z = "Python"

這裡有整形、浮點和字串變數。

多重賦值:

你也可以在單個Python語句中將值分配給多個變數。這稱為多重賦值。比如下面的例子,

x, y, z = 2, 4.124, "Python"

這裡2被分配給x,4.124被分配給y,字串“Python”被分配給z

如果你想為不同的變數賦於相同的值,你可以這樣來寫:

x = y = z = "Blue"

現在三個變數都是相等的。

Warning
將列表型別的資料用像上面這樣的方式賦值給兩個或者多個變數,是很危險的。多個變數都指向相同的記憶體位置,因此,對於一個可變型別的變數, 如果一個變數修改了值,那其他所有變數的值都被修改了。如果你沒有意識到這一點,你可能會在程式執行中被坑的很慘。

Python 資料型別:

每當你為變數賦值時, 變數的資料型別也隨之確定下來。Python 是物件導向的程式設計, Python 中的所有的元素都是物件

在 Python 中, 變數的資料型別實際上是類, 其中的變數是例項 (物件)。

下面是 Python 中的一些資料型別:

數字:

整數、浮點和複數等數字都是 Python 數字。在 Python 中, 整數由int表示、浮點用float表示,以及複數用complex 類來表示。

內建函式type ()可用於檢查變數的資料型別或變數所屬的類。

內建函式isinstance ()可用於檢查物件是否是特定的類的例項或其子類別。它的第一個引數是物件本身, 第二個是要與之進行比較的資料型別。

x = 3
print("type of", x, "is", type(x))
x = 3.23
print("type of", x, "is", type(x))
x = 3+3j
print("is", x, "a complex number:", isinstance(x, complex))
type of 3 is <class 'int'>
type of 3.23 is <class 'float'>
is (3+3j) a complex number: True

列表list

列表是(不同的)資料型別的元素的有序序列。你可以使用方括號[]在建立列表,並在方括號內使用逗號分隔列表項。

x = [2, 4.5, "blue"]

要訪問列表的成員,可以使用在Python中被稱為切片運算子的索引訪問運算子[]。列表元素的索引從0開始。下面來舉個例子,

x = [2, 4, 6, 8, 10]
print('x[0] =', x[0])			# 列印第一個元素
print('x[0:2] =', x[0:2])		# 列印前兩個元素,位於索引位置0和1
print('x[2:] =', x[2:])			# 列印從索引位置2開始的所有元素
x[0] = 2
x[0:2] = [2, 4]
x[2:] = [6, 8, 10]

Python列表中的專案可以更改的(更新,刪除,新增)。換句話說,Python列表是可變的。

Note
Python列表是可變型別的。

元組tuple

元組也是與列表類似的一種有序序列。元組和列表之間的重要區別是元組元素是不可變的。你可以用小括號()來定義一個Python元組,元素間用逗號分隔:

x = (3, 'pink', 3+8j)
print('x[0] =', x[0])
print('x[0:2] =', x[0:2])
x[0] = 4
x[0] = 3
x[0:2] = (3, 'pink')
TypeError: 'tuple' object does not support item assignment
Note
Python元組是不可變型別的。

字串String:

字串是一個字元序列。可以使用單引號或雙引號來建立字串,還可以使用三重引號來建立多行字串。

x = "String of characters"
x = """Multiline
string"""

你可以通過切片操作符來訪問字串裡面的元素,也就是字元資料。

x = 'Python Programming'
print('x[0] =', x[0])
print('x[4:15] =', x[4:15])
x[4] = 'l'
x[0] = P
x[4:15] = on Programm
TypeError: 'str' object does not support item assignment
Note
Python字串是不可變型別的。

集合Set:

Python集合中的每個元素都是唯一的,並且集合是無序的元素列表。Python中的集合可以使用大括號{}來建立,而元素之間用逗號分隔。

x = {3, 5, 7, 2, 4, 5}		
print(x)		 # 列印集合
print(type(x))	  # 檢視變數x的資料型別
{2, 3, 4, 5, 7}
<class 'set'>
Note
Python集合是不可變型別的。

字典Dictionary

Python字典是Python的一種原生資料型別,它的元素是鍵-值對。一個字典包含無序的元素。如果你知道鍵,那就可以檢索出對應的資料或值。

可以使用花括號{}將每個元素都作為包含鍵和值的對來建立字典。Python字典中的鍵和值可以是任何型別,但其中鍵的資料型別必須是不可變型別的,比如字串元組等,列表是不能作為Python字典元素裡的鍵的。

下面來舉些例子,

x = {1:'blue', 'key':'pink'}
print(type(x))
print('x[1] = ', x[1])		
print("x['key'] =", x['key']) 
<class 'dict'>
x[1] =  blue
x['key'] = pink
Note
Python字典是可變資料型別。

型別轉換:

Python變數可以轉換為其他的資料型別變數,例如,可以將int資料型別轉換為浮點資料型別float。對於型別轉換,你可以使用像int()float(),str()等轉換函式來進行資料轉換。

x = 8
print("Value of x = ", int(x))
print("Value of x = ", float(x))
Value of x =  8
Value of x =  8.0

如果你想將float值轉換為int值,那麼小數部分將被捨棄。

>>> y = 3.4
>>> print("Converting float to int:", int(y))
Converting float to int: 3

如果要將字串資料型別轉換為另一種型別,則必須提供相容的資料,否則你將得到一個ValueError

>>> print("Converting string to float:", float('33.9'))
Converting string to float: 33.9
>>> print("Converting string to float:", float('text'))
Traceback (most recent call last):
  File "<pyshell#12>", line 1, in <module>
    float('a')
ValueError: could not convert string to float: text

你可以將一個序列轉換為另一個序列,例如,使用 list()set()tuple()等函式完成集合,元組或列表等的轉換。

print(set([4, 5, 6]))
print(tuple({8, 9, 10}))
print(list('Python'))
{4, 5, 6}
(8, 9, 10)
['P', 'y', 't', 'h', 'o', 'n']