Python內建類型及常見問題


python的內建資料型別非常豐富,大致可分為五類:None、數字型別、序列型別、對應型別和集合型別。下面我將分別對他們介紹,做個總結以備以後查看。下面的表格列出了各個類別下的具體資料類型。 *註:本文所講的內容都是基於python2的,python3會有些不同*。

1.png

1.None

None表示一個null對象,這是一個空對象,如果一個函數沒有傳回值,則傳回null物件。 None沒有任何屬性,在布林表達式中表示False。

2.數字類型

除了布林類型外,所有數字類型都是有符號的。整數的表示範圍在-2147483648和2147483647之間,長整數可以表示任意長度,只受可用記憶體大小的限制。


#整数i = 123i = int(123)#长整数l = 123Ll = long(123)

浮點數是雙精度型別(64bit),和c語言中double相同,數值範圍-1.7*10(-308)到1.7*10(308)。

f = 12.3f = float(12.3)

複數使用一對浮點數表示,分為實部和虛部,使用real和imag訪問,虛部後綴j或J。

c = 1.0 + 2.3jc = complex(1.0, 2.3)print c.real,c.imag

布林值只有True和False兩個值,分別對應為整數1和0。

b = Falseb = bool(True)


2.1.數字運算

除了布林類型外,int、long、float和complex都可以使用的運算為:加、減、乘、除、整除、冪運算和取餘。以下分別舉例說明。


>>> 1 + 2 # 加法3>>> 1 - 2 # 减法-1>>> 2 * 3 # 乘6>>> 2 / 4 # 整数除0>>> 2 / 4.0 # 浮点除0.5>>> 3 // 2.0 # 整除1.0>>> 2 % 3 # 取余2>>> 3 ** 2 # 幂运算 =3^29

對於整數還可以進行位元運算,共有6種位元運算:取反(~)、左移(<<)、右移(>>) 、異或(^)、位元或(|)、位元與(&)。

>>> ~1 # 1取反后为-2的补码-2>>> 8 << 1 # 左移16>>> 8 >> 2 # 右移2>>> 1 ^ 3 # 01 和 11 异或得到10,就是22>>> 1 | 3 # 01 和 11 位或得到11,就是33>>> 1 & 3 # 01 和 11 位与得到01,就是11

布林類型可以透過布林運算式取值,布林比較運算子有6種:小於(<)、小於等於(<=)、大於(>)、大於等於(> =)、等於(==)、不等於(!=)。

>>> 1 < 2True>>> 1 <= 2True>>> 1 > 2False>>> 1 >= 2False>>> 1 == 2False>>> 1 != 2True

對於布林類型也可以進行邏輯運算,有3種運算:邏輯非(not)、邏輯非或(or)、邏輯與(and)。

>>> not TrueFalse>>> True or FalseTrue>>> True and FalseFalse


2.2.常用數字型別函數

abs():傳回給定物件的絕對值。


>>> abs(-2)2

divmod():把除法和取餘運算結合起來,回傳一個包含商數和餘數的元組。

>>> divmod(10, 3)(3, 1)

pow():兩個參數,冪運算。三個參數,乘方後取餘。

>>> pow(2, 5),pow(2, 5, 10)(32, 2)

round():四捨五入

>>> round(3.4),round(3.6)(3.0, 4.0)

floor():向下取整, ceil():向上取整, sqrt():開方, 需要math模組。

>>> from math import floor,ceil,sqrt>>> floor(3.6),ceil(3.6),sqrt(9)(3.0, 4.0, 3.0)

conjugate():複數取共軛

>>> c = 2 + 3j>>> c.conjugate()(2-3j)


#3.序列類型

序列表示索引為非負數的有序物件集合,包括字串、列表和元組。字串是字元的序列,列表和元組是任意物件的序列。字串和元組是不可變的,而清單可以插入、刪除和替換。所有序列支援迭代。

3.1.字串

建立一個字串很簡單,但表示字串的方法有很多。


s = 'string's = "string" # 和上面单引号一样s = '''string''' # 三引号之间的内容都被保留,用于多行输入s = r"string" # 原生字符,关掉字符串中的转义。s = u"string" # unicode字符串

字串的方法很多,但不會改變字串裡的內容,常用的如下表所示。

2.png

舉個format的例子,{0}表示*args的第一個值,{name}表示kwargs中name的值。
>>> "Here is {0},I'm {name}.".format("wuyuans.com", name="wuyuan")"Here is wuyuans.com,I'm wuyuan"


3.2.列表和元組

列表的內容可變,可以包含任意對象,使用中括號表示。
元組的內容不可變,可以包含任意對象,使用圓括號表示。


l = [1, 2, 3, '4', '5'] # 列表l = list((1, 2, 3, '4', '5'))t = (1, 2, 3, '4', '5') # 元组t = tuple("1234")

清單的方法主要用來改變裡面的內容,以下列出清單常用的方法。

3.png

也可以透過索引來刪除清單中的元素。
>>> l = [1, 2, 3, 4, 5]>>> del l[1]>>> l[1, 3, 4, 5]


3.3.序列通用運算

所有序列都可以透過索引來訪問,第一個元素的索引為0,-1為最後一個元素,-2倒數第二個,一次類推。
切片操作:指定索引範圍,傳回對應的子序列。
還有一些常用的,如下


>>> t = (1, 2, 3, 4, 5)>>> l = [1, 2, 3, 4, 5]>>> t[0]1>>> t[1:4] # 索引1~4(2, 3, 4)>>> t[1:4:2] # 索引1~4,步进为2(2, 4)>>> len(t) # 序列长度5>>> max(t) # 最大值5>>> min(t) # 最小值1>>> sum(t) # 序列求和15


#3.4.xrange()物件

xrange()物件比較特殊,他表示一個整數範圍,只有在存取它時才會計算他的值,所以切片操作是不能用於xrange物件的。 xrange物件由xrange([i, ] j [, stride])函數創建,i為起始值,stride為步進值。


>>> x = xrange(1,10,2)>>> for i in x: print i    13579


4.映射類型

字典(dict)是python為唯一的內建映射類型,任何不可變物件都可以用作字典的鍵值,如字串、數字、元組等。字典使用大括號表示,鍵和數值之間用冒號分割,各個鍵值間用逗號隔開。映射對像是無序的。


d = dict((['name', 'wuyuan'], ['age', 23]))d = {'name': 'wuyuan', 'blog': 'wuyuans.com', 'age': 23}d['school'] = 'HDU' # 添加一项

字典的常用方法和運算

4.png字典的歷遍方式:
#使用键历遍for i in d:    print i,d[i]#使用键值历遍for k,v in d.items():    print k,v


5.集合類型

集合是唯一項目的無序集,集合不提供索引或切片運算,集合的長度可變,但放入裡面的必須是不可變的。集合分為兩種:可變集合(set)和不可變集合(frozenset)。


s = set([1, 2, 3])fs = frozenset([1, 2, 3])

集合通用方法與運算

5.png

#可變集合set的方法與運算

6.png


python內建類型常見問題


python基本內建資料型別有哪些?

一些基本資料類型,例如:整數(數字)、字串、元組、列表、字典和布林類型。隨著學習進度的加深,大家還會接觸到更多更有趣的資料類型,python初學者在入門時先了解這幾種類型就可以了。


基本上內建資料型別對應符號?

1)整數型-int-數字

#

python有5種數字型,最常見的就是整數型int。例如:1234、-1234

2)布林型-bool-用符號==表示

布林型是比較特殊的python數字型,它只有True和False兩種值,它主要用來比較和判斷,所得結果叫做布林值。例如:3==3 給予True,3==5給予False

3)字串-str-以' '或" "表示

例如:'www.phpcnpython.com'或"hello"

4)列表—list—用[ ]符號表示

例如:[1, 2,3,4]

5)元組-tuple-以( )符號表示

##例如:('d',300)

6)字典-dict-用{ }符號表示

例如:{'name':'coco','country':'china'}


#Python基本資料型別中哪些可變,哪些是不可變?

python可變資料型別:列表list[ ]、字典dict{ }

#python不可變資料型別:整數int、字符串str' '、元組tuple()




#