python的內(nèi)置數(shù)據(jù)類型非常豐富,大致可以分為五類:None、數(shù)字類型、序列類型、映射類型和集合類型。下面我將分別對他們進(jìn)行介紹,做個(gè)總結(jié)以備以后查看。下面的表列出了各個(gè)類別下的具體數(shù)據(jù)類型。*注:本文所講的內(nèi)容都是基于python2的,python3會(huì)有些不同*。
類型分類 | 類型名稱 | 描述 |
---|---|---|
None | Type(None) | null對象None |
數(shù)字類型 | int | 整數(shù) |
long | 長整數(shù),任意精度(python2) | |
float | 浮點(diǎn)數(shù) | |
complex | 復(fù)數(shù) | |
bool | 布爾值(True或False) | |
序列類型 | str | 字符串 |
unicode | Unicode字符串(python2) | |
list | 列表 | |
tuple | 元組 | |
xrange | xrang()創(chuàng)建的整數(shù)范圍 | |
映射類型 | dic | 字典 |
集合類型 | set | 可變集合 |
frozenset | 不可變集合 |
#整數(shù)
i = 123
i = int(123)
#長整數(shù)
l = 123L
l = long(123)
浮點(diǎn)數(shù)是雙精度類型(64bit),和c語言中double相同,數(shù)值范圍-1.7*10(-308)到1.7*10(308)。
f = 12.3
f = float(12.3)
復(fù)數(shù)使用一對浮點(diǎn)數(shù)表示,分為實(shí)部和虛部,使用real和imag訪問,虛部后綴j或J。
c = 1.0 + 2.3j
c = complex(1.0, 2.3)
print c.real,c.imag
布爾值只有True和False兩個(gè)值,分別映射為整數(shù)1和0。
b = False
b = bool(True)
>>> 1 + 2 # 加法
3
>>> 1 - 2 # 減法
-1
>>> 2 * 3 # 乘
6
>>> 2 / 4 # 整數(shù)除
0
>>> 2 / 4.0 # 浮點(diǎn)除
0.5
>>> 3 // 2.0 # 整除
1.0
>>> 2 % 3 # 取余
2
>>> 3 ** 2 # 冪運(yùn)算 =3^2
9
對于整數(shù)還可以進(jìn)行位運(yùn)算,共有6種位運(yùn)算:取反(~)、左移(<<)、右移(>>)、異或(^)、按位或(|)、按位與(&)。
>>> ~1 # 1取反后為-2的補(bǔ)碼
-2
>>> 8 << 1 # 左移
16
>>> 8 >> 2 # 右移
2
>>> 1 ^ 3 # 01 和 11 異或得到10,就是2
2
>>> 1 | 3 # 01 和 11 位或得到11,就是3
3
>>> 1 & 3 # 01 和 11 位與得到01,就是1
1
布爾類型可以通過布爾表達(dá)式取值,布爾比較運(yùn)算符有6種:小于(<)、小于等于(<=)、大于(>)、大于等于(>=)、等于(==)、不等于(!=)。
>>> 1 < 2
True
>>> 1 <= 2
True
>>> 1 > 2
False
>>> 1 >= 2
False
>>> 1 == 2
False
>>> 1 != 2
True
對于布爾類型還可以進(jìn)行邏輯運(yùn)算,有3種運(yùn)算:邏輯非(not)、邏輯非或(or)、邏輯與(and)。
>>> not True
False
>>> True or False
True
>>> True and False
False
>>> abs(-2)
2
divmod():把除法和取余運(yùn)算結(jié)合起來,返回一個(gè)包含商和余數(shù)的元組。
>>> divmod(10, 3)
(3, 1)
pow():兩個(gè)參數(shù),冪運(yùn)算。三個(gè)參數(shù),乘方后取余。
>>> 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():復(fù)數(shù)取共軛
>>> c = 2 + 3j
>>> c.conjugate()
(2-3j)
s = 'string'
s = "string" # 和上面單引號(hào)一樣
s = '''string''' # 三引號(hào)之間的內(nèi)容都被保留,用于多行輸入
s = r"string" # 原生字符,關(guān)掉字符串中的轉(zhuǎn)義。
s = u"string" # unicode字符串
字符串的方法很多,但不會(huì)改變字符串里的內(nèi)容,常用的如下表所示。
方法 | 描述 |
---|---|
index(sub[,start[,end]]) | 找到子字符串sub首次出現(xiàn)的位置,否則返回-1 |
find(sub[,start[,end]]) | 找到子字符串sub首次出現(xiàn)的位置,否則報(bào)錯(cuò) |
startswith(prefix[,start[,end]]) | 檢查是否以prefix開頭 |
count(sub[,start[,end]]) | 計(jì)算子字符串sub出現(xiàn)的次數(shù) |
decode([encoding[, errors]]) | 以encoding解碼字符串,返回unicode字符串(只用于字節(jié)字符串) |
encode([encoding[, errors]]) | 以encoding編碼字符串(只用于unicode字符串) |
upper() | 返回大寫形式 |
lower() | 返回小寫形式 |
split(sep[,maxsplit]) | 以sep為分隔符分割字符串,maxsplit為最大分割次數(shù) |
join(t) | 使用當(dāng)前字符串為分隔符連接t中的字符串 |
format(*args, kwargs) | 格式化字符串 |
>>> "Here is {0},I'm {name}.".format("wuyuans.com", name="wuyuan")
"Here is wuyuans.com,I'm wuyuan"
l = [1, 2, 3, '4', '5'] # 列表
l = list((1, 2, 3, '4', '5'))
t = (1, 2, 3, '4', '5') # 元組
t = tuple("1234")
列表的方法主要用于改變里面的內(nèi)容,下面列出列表常用的方法。
方法 | 描述 |
---|---|
list(s) | 將s轉(zhuǎn)化為一個(gè)列表 |
s.append(x) | 將新元素x加到s的尾部 |
s.extend(t) | 將新列表t加到s的尾部 |
s.count(x) | 計(jì)算x的出現(xiàn)次數(shù) |
s.index(x[, start[, stop]]) | 搜索x元素 |
s.insert(i, x) | 在i處添加x |
s.pop([i]) | 彈出第i個(gè)元素,如果省略i,彈出最后一個(gè) |
s.remove(x) | 移除x |
s.reverse(x) | 反轉(zhuǎn)列表 |
s.sort([key[, reverse]]) | 排序 |
>>> l = [1, 2, 3, 4, 5]
>>> del l[1]
>>> l
[1, 3, 4, 5]
>>> 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,步進(jìn)為2
(2, 4)
>>> len(t) # 序列長度
5
>>> max(t) # 最大值
5
>>> min(t) # 最小值
1
>>> sum(t) # 序列求和
15
>>> x = xrange(1,10,2)
>>> for i in x:
print i
1
3
5
7
9
d = dict((['name', 'wuyuan'], ['age', 23]))
d = {'name': 'wuyuan', 'blog': 'wuyuans.com', 'age': 23}
d['school'] = 'HDU' # 添加一項(xiàng)
字典的常用方法和操作
方法和操作 | 描述 |
---|---|
len(d) | 返回字典d的項(xiàng)目數(shù) |
d[k] | d中鍵k的值 |
del d[k] | 刪除d[k] |
k in d | 如果k是d的鍵值,返回True |
d.clear() | 清空d |
d.copy() | 返回d的一個(gè)拷貝 |
d.fromkeys(s[, value]) | 返回一個(gè)新字典,s中的所有元素作為新字典的鍵,值為value |
d.get(k[, v]) | 返回d[k],沒有則返回v |
d.items() | 返回由鍵值組成的序列,主要用于歷遍 |
d.keys() | 返回由鍵組成的序列 |
d.values() | 返回由值組成的序列 |
d.pop(k[, default]) | 彈出d[k],沒有則返回default |
d.update(b) | 將b中對象添加到d中 |
#使用鍵歷遍
for i in d:
print i,d[i]
#使用鍵值歷遍
for k,v in d.items():
print k,v
s = set([1, 2, 3])
fs = frozenset([1, 2, 3])
集合通用方法和操作
方法和操作 | 描述 |
---|---|
len(s) | 返回集合s的項(xiàng)目數(shù) |
s.copy() | 返回集合s的一份副本 |
s.difference(t) | 求差集,返回在s中,但不在t中的項(xiàng)目 |
s.intersection(t) | 求交集,返回同時(shí)在s和t中的項(xiàng)目 |
s.isdisjoint(t) | s和t中沒有相同項(xiàng),返回True |
s.issubset(t) | s是t的子集,返回True |
s.issuperset(t) | s是t的超集,返回True |
s.union(t) | 求并集,返回在s或t中的項(xiàng)目 |
方法和操作 | 描述 |
---|---|
s.add(item) | 添加item |
s.clear() | 清空集合s |
s.difference_update(t) | 在s中刪除同時(shí)在s和t中的項(xiàng)目 |
s.discard(item) | 刪除item |
s.pop() | 彈出任一項(xiàng) |
s.remove(item) | 刪除item,沒有則引發(fā)異常 |
s.update(t) | 將t中所有項(xiàng)添加到t中,t為任意支持迭代對象 |
一些基本數(shù)據(jù)類型,比如:整型(數(shù)字)、字符串、元組、列表、字典和布爾類型。隨著學(xué)習(xí)進(jìn)度的加深,大家還會(huì)接觸到更多更有趣的數(shù)據(jù)類型,python初學(xué)者入門時(shí)先了解這幾種類型就可以了。
1)整型——int——數(shù)字
python有5種數(shù)字類型,最常見的就是整型int。例如:1234、-1234
2)布爾型——bool——用符號(hào)==表示
布爾型是一種比較特殊的python數(shù)字類型,它只有True和False兩種值,它主要用來比較和判斷,所得結(jié)果叫做布爾值。例如:3==3 給出True,3==5給出False
3)字符串——str——用' '或" "表示
例如:'www.iplaypython.com'或者"hello"
4)列表——list——用[ ]符號(hào)表示
例如:[1,2,3,4]
5)元組——tuple——用( )符號(hào)表示
例如:('d',300)
6)字典——dict——用{ }符號(hào)表示
例如:{'name':'coco','country':'china'}
python可變數(shù)據(jù)類型:列表list[ ]、字典dict{ }
python不可變數(shù)據(jù)類型:整型int、字符串str' '、元組tuple()
更多建議: