Python數(shù)據(jù)類型詳解
目錄
1、字符串
2、布爾類型
3、整數(shù)
4、浮點(diǎn)數(shù)
5、數(shù)字
6、列表
7、元組
8、字典
9、日期
1、字符串
1.1、如何在Python中使用字符串
a、使用單引號(hào)(')
用單引號(hào)括起來表示字符串,例如:
str='this is string';
print str;
b、使用雙引號(hào)(")
雙引號(hào)中的字符串與單引號(hào)中的字符串用法完全相同,例如:
str="this is string";
print str;
c、使用三引號(hào)(''')
利用三引號(hào),表示多行的字符串,可以在三引號(hào)中自由的使用單引號(hào)和雙引號(hào),例如:
str='''this is string
this is pythod string
this is string'''
print str;
2、布爾類型
bool=False;
print bool;
bool=True;
print bool;
3、整數(shù)
int=20;
print int;
4、浮點(diǎn)數(shù)
float=2.3;
print float;
5、數(shù)字
包括整數(shù)、浮點(diǎn)數(shù)。
5.1、刪除數(shù)字對(duì)象引用,例如:
a=1;
b=2;
c=3;
del a;
del b, c;
#print a; #刪除a變量后,再調(diào)用a變量會(huì)報(bào)錯(cuò)
5.2、數(shù)字類型轉(zhuǎn)換
int(x [,base]) 將x轉(zhuǎn)換為一個(gè)整數(shù) float(x ) 將x轉(zhuǎn)換到一個(gè)浮點(diǎn)數(shù) complex(real [,imag]) 創(chuàng)建一個(gè)復(fù)數(shù) str(x) 將對(duì)象x轉(zhuǎn)換為字符串 repr(x) 將對(duì)象x轉(zhuǎn)換為表達(dá)式字符串 eval(str) 用來計(jì)算在字符串中的有效Python表達(dá)式,并返回一個(gè)對(duì)象 tuple(s) 將序列s轉(zhuǎn)換為一個(gè)元組 list(s) 將序列s轉(zhuǎn)換為一個(gè)列表 chr(x) 將一個(gè)整數(shù)轉(zhuǎn)換為一個(gè)字符 unichr(x) 將一個(gè)整數(shù)轉(zhuǎn)換為Unicode字符 ord(x) 將一個(gè)字符轉(zhuǎn)換為它的整數(shù)值 hex(x) 將一個(gè)整數(shù)轉(zhuǎn)換為一個(gè)十六進(jìn)制字符串 oct(x) 將一個(gè)整數(shù)轉(zhuǎn)換為一個(gè)八進(jìn)制字符串
5.3、數(shù)學(xué)函數(shù)
abs(x) 返回?cái)?shù)字的絕對(duì)值,如abs(-10) 返回 10 ceil(x) 返回?cái)?shù)字的上入整數(shù),如math.ceil(4.1) 返回 5 cmp(x, y) 如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1 exp(x) 返回e的x次冪(ex),如math.exp(1) 返回2.718281828459045 fabs(x) 返回?cái)?shù)字的絕對(duì)值,如math.fabs(-10) 返回10.0 floor(x) 返回?cái)?shù)字的下舍整數(shù),如math.floor(4.9)返回 4 log(x) 如math.log(math.e)返回1.0,math.log(100,10)返回2.0 log10(x) 返回以10為基數(shù)的x的對(duì)數(shù),如math.log10(100)返回 2.0 max(x1, x2,...) 返回給定參數(shù)的最大值,參數(shù)可以為序列。 min(x1, x2,...) 返回給定參數(shù)的最小值,參數(shù)可以為序列。 modf(x) 返回x的整數(shù)部分與小數(shù)部分,兩部分的數(shù)值符號(hào)與x相同,整數(shù)部分以浮點(diǎn)型表示。 pow(x, y) x**y 運(yùn)算后的值。 round(x [,n]) 返回浮點(diǎn)數(shù)x的四舍五入值,如給出n值,則代表舍入到小數(shù)點(diǎn)后的位數(shù)。 sqrt(x) 返回?cái)?shù)字x的平方根,數(shù)字可以為負(fù)數(shù),返回類型為實(shí)數(shù),如math.sqrt(4)返回 2+0j
6、列表
6.1、初始化列表,例如:
list=['physics', 'chemistry', 1997, 2000];
nums=[1, 3, 5, 7, 8, 13, 20];
6.2、訪問列表中的值,例如:
'''nums[0]: 1''' print "nums[0]:", nums[0] '''nums[2:5]: [5, 7, 8] 從下標(biāo)為2的元素切割到下標(biāo)為5的元素,但不包含下標(biāo)為5的元素''' print "nums[2:5]:", nums[2:5] '''nums[1:]: [3, 5, 7, 8, 13, 20] 從下標(biāo)為1切割到最后一個(gè)元素''' print "nums[1:]:", nums[1:] '''nums[:-3]: [1, 3, 5, 7] 從最開始的元素一直切割到倒數(shù)第3個(gè)元素,但不包含倒數(shù)第三個(gè)元素''' print "nums[:-3]:", nums[:-3] '''nums[:]: [1, 3, 5, 7, 8, 13, 20] 返回所有元素''' print "nums[:]:", nums[:]
6.3、更新列表,例如:
nums[0]="ljq"; print nums[0];
6.4、刪除列表元素
del nums[0]; '''nums[:]: [3, 5, 7, 8, 13, 20]''' print "nums[:]:", nums[:];
6.5、列表腳本操作符
列表對(duì)+和*的操作符與字符串相似。+號(hào)用于組合列表,*號(hào)用于重復(fù)列表,例如:
print len([1, 2, 3]); #3 print [1, 2, 3] + [4, 5, 6]; #[1, 2, 3, 4, 5, 6] print ['Hi!'] * 4; #['Hi!', 'Hi!', 'Hi!', 'Hi!'] print 3 in [1, 2, 3] #True for x in [1, 2, 3]: print x, #1 2 3
6.6、列表截取
L=['spam', 'Spam', 'SPAM!']; print L[2]; #'SPAM!' print L[-2]; #'Spam' print L[1:]; #['Spam', 'SPAM!']
6.7、列表函數(shù)&方法
list.append(obj) 在列表末尾添加新的對(duì)象 list.count(obj) 統(tǒng)計(jì)某個(gè)元素在列表中出現(xiàn)的次數(shù) list.extend(seq) 在列表末尾一次性追加另一個(gè)序列中的多個(gè)值(用新列表擴(kuò)展原來的列表) list.index(obj) 從列表中找出某個(gè)值第一個(gè)匹配項(xiàng)的索引位置,索引從0開始 list.insert(index, obj) 將對(duì)象插入列表 list.pop(obj=list[-1]) 移除列表中的一個(gè)元素(默認(rèn)最后一個(gè)元素),并且返回該元素的值 list.remove(obj) 移除列表中某個(gè)值的第一個(gè)匹配項(xiàng) list.reverse() 反向列表中元素,倒轉(zhuǎn) list.sort([func]) 對(duì)原列表進(jìn)行排序
7、元組(tuple)
Python的元組與列表類似,不同之處在于元組的元素不能修改;元組使用小括號(hào)(),列表使用方括號(hào)[];元組創(chuàng)建很簡單,只需要在括號(hào)中添加元素,并使用逗號(hào)(,)隔開即可,例如:
tup1 = ('physics', 'chemistry', 1997, 2000); tup2 = (1, 2, 3, 4, 5 ); tup3 = "a", "b", "c", "d";
創(chuàng)建空元組,例如:tup = ();
元組中只有一個(gè)元素時(shí),需要在元素后面添加逗號(hào),例如:tup1 = (50,);
元組與字符串類似,下標(biāo)索引從0開始,可以進(jìn)行截取,組合等。
7.1、訪問元組
tup1 = ('physics', 'chemistry', 1997, 2000); #tup1[0]: physics print "tup1[0]: ", tup1[0] #tup1[1:5]: ('chemistry', 1997) print "tup1[1:5]: ", tup1[1:3]
7.2、修改元組
元組中的元素值是不允許修改的,但我們可以對(duì)元組進(jìn)行連接組合,例如:
tup1 = (12, 34.56);
tup2 = ('abc', 'xyz');# 以下修改元組元素操作是非法的。
# tup1[0] = 100;# 創(chuàng)建一個(gè)新的元組
tup3 = tup1 + tup2; print tup3; #(12, 34.56, 'abc', 'xyz')
7.3、刪除元組
元組中的元素值是不允許刪除的,可以使用del語句來刪除整個(gè)元組,例如:
tup = ('physics', 'chemistry', 1997, 2000); print tup; del tup;
7.4、元組運(yùn)算符
與字符串一樣,元組之間可以使用+號(hào)和*號(hào)進(jìn)行運(yùn)算。這就意味著他們可以組合和復(fù)制,運(yùn)算后會(huì)生成一個(gè)新的元組。
7.5、元組索引&截取
L = ('spam', 'Spam', 'SPAM!'); print L[2]; #'SPAM!' print L[-2]; #'Spam' print L[1:]; #['Spam', 'SPAM!']
7.6、元組內(nèi)置函數(shù)
cmp(tuple1, tuple2) 比較兩個(gè)元組元素。 len(tuple) 計(jì)算元組元素個(gè)數(shù)。 max(tuple) 返回元組中元素最大值。 min(tuple) 返回元組中元素最小值。 tuple(seq) 將列表轉(zhuǎn)換為元組。
8、字典
8.1、字典簡介
字典(dictionary)是除列表之外Python中最靈活的內(nèi)置數(shù)據(jù)結(jié)構(gòu)類型。列表是有序的對(duì)象結(jié)合,字典是無序的對(duì)象集合。兩者之間的區(qū)別在于:字典當(dāng)中的元素是通過鍵來存取的,而不是通過偏移存取。
字典由鍵和對(duì)應(yīng)的值組成。字典也被稱作關(guān)聯(lián)數(shù)組或哈希表。基本語法如下:
dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'};
也可如此創(chuàng)建字典:
dict1 = { 'abc': 456 }; dict2 = { 'abc': 123, 98.6: 37 };
每個(gè)鍵與值必須用冒號(hào)隔開(:),每對(duì)用逗號(hào)分割,整體放在花括號(hào)中({})。鍵必須獨(dú)一無二,但值則不必;值可以取任何數(shù)據(jù)類型,但必須是不可變的,如字符串,數(shù)或元組。
8.2、訪問字典里的值
#!/usr/bin/Python dict = {'name': 'Zara', 'age': 7, 'class': 'First'}; print "dict['name']: ", dict['name']; print "dict['age']: ", dict['age'];
8.3、修改字典
向字典添加新內(nèi)容的方法是增加新的鍵/值對(duì),修改或刪除已有鍵/值對(duì)如下實(shí)例:
#!/usr/bin/Python dict = {'name': 'Zara', 'age': 7, 'class': 'First'}; dict["age"]=27; #修改已有鍵的值 dict["school"]="wutong"; #增加新的鍵/值對(duì) print "dict['age']: ", dict['age']; print "dict['school']: ", dict['school'];
8.4、刪除字典
del dict['name']; # 刪除鍵是'name'的條目
dict.clear(); # 清空詞典所有條目
del dict ; # 刪除詞典
例如:
#!/usr/bin/Python dict = {'name': 'Zara', 'age': 7, 'class': 'First'}; del dict['name']; #dict {'age': 7, 'class': 'First'} print "dict", dict;
注意:字典不存在,del會(huì)引發(fā)一個(gè)異常
8.5、字典內(nèi)置函數(shù)&方法
cmp(dict1, dict2) 比較兩個(gè)字典元素。 len(dict) 計(jì)算字典元素個(gè)數(shù),即鍵的總數(shù)。 str(dict) 輸出字典可打印的字符串表示。 type(variable) 返回輸入的變量類型,如果變量是字典就返回字典類型。 radiansdict.clear() 刪除字典內(nèi)所有元素 radiansdict.copy() 返回一個(gè)字典的淺復(fù)制 radiansdict.fromkeys() 創(chuàng)建一個(gè)新字典,以序列seq中元素做字典的鍵,val為字典所有鍵對(duì)應(yīng)的初始值 radiansdict.get(key, default=None) 返回指定鍵的值,如果值不在字典中返回default值 radiansdict.has_key(key) 如果鍵在字典dict里返回true,否則返回false radiansdict.items() 以列表返回可遍歷的(鍵, 值) 元組數(shù)組 radiansdict.keys() 以列表返回一個(gè)字典所有的鍵 radiansdict.setdefault(key, default=None) 和get()類似, 但如果鍵不已經(jīng)存在于字典中,將會(huì)添加鍵并將值設(shè)為default radiansdict.update(dict2) 把字典dict2的鍵/值對(duì)更新到dict里 radiansdict.values() 以列表返回字典中的所有值
9、日期和時(shí)間
9.1、獲取當(dāng)前時(shí)間,例如:
import time, datetime;
localtime = time.localtime(time.time())
#Local current time : time.struct_time(tm_year=2014, tm_mon=3, tm_mday=21, tm_hour=15, tm_min=13, tm_sec=56, tm_wday=4, tm_yday=80, tm_isdst=0)
print "Local current time :", localtime
說明:time.struct_time(tm_year=2014, tm_mon=3, tm_mday=21, tm_hour=15, tm_min=13, tm_sec=56, tm_wday=4, tm_yday=80, tm_isdst=0)屬于struct_time元組,struct_time元組具有如下屬性:
9.2、獲取格式化的時(shí)間
可以根據(jù)需求選取各種格式,但是最簡單的獲取可讀的時(shí)間模式的函數(shù)是asctime():
2.1、日期轉(zhuǎn)換為字符串
首選:print time.strftime('%Y-%m-%d %H:%M:%S'); 其次:print datetime.datetime.strftime(datetime.datetime.now(), '%Y-%m-%d %H:%M:%S') 最后:print str(datetime.datetime.now())[:19]
2.2、字符串轉(zhuǎn)換為日期
expire_time = "2013-05-21 09:50:35" d = datetime.datetime.strptime(expire_time,"%Y-%m-%d %H:%M:%S") print d;
9.3、獲取日期差
oneday = datetime.timedelta(days=1) #今天,2014-03-21 today = datetime.date.today() #昨天,2014-03-20 yesterday = datetime.date.today() - oneday #明天,2014-03-22 tomorrow = datetime.date.today() + oneday #獲取今天零點(diǎn)的時(shí)間,2014-03-21 00:00:00 today_zero_time = datetime.datetime.strftime(today, '%Y-%m-%d %H:%M:%S') #0:00:00.001000 print datetime.timedelta(milliseconds=1), #1毫秒 #0:00:01 print datetime.timedelta(seconds=1), #1秒 #0:01:00 print datetime.timedelta(minutes=1), #1分鐘 #1:00:00 print datetime.timedelta(hours=1), #1小時(shí) #1 day, 0:00:00 print datetime.timedelta(days=1), #1天 #7 days, 0:00:00 print datetime.timedelta(weeks=1)
9.4、獲取時(shí)間差
#1 day, 0:00:00 oneday = datetime.timedelta(days=1) #今天,2014-03-21 16:07:23.943000 today_time = datetime.datetime.now() #昨天,2014-03-20 16:07:23.943000 yesterday_time = datetime.datetime.now() - oneday #明天,2014-03-22 16:07:23.943000 tomorrow_time = datetime.datetime.now() + oneday 注意時(shí)間是浮點(diǎn)數(shù),帶毫秒。 那么要獲取當(dāng)前時(shí)間,需要格式化一下: print datetime.datetime.strftime(today_time, '%Y-%m-%d %H:%M:%S') print datetime.datetime.strftime(yesterday_time, '%Y-%m-%d %H:%M:%S') print datetime.datetime.strftime(tomorrow_time, '%Y-%m-%d %H:%M:%S')
9.5、獲取上個(gè)月最后一天
last_month_last_day = datetime.date(datetime.date.today().year,datetime.date.today().month,1)-datetime.timedelta(1)
9.6、字符串日期格式化為秒數(shù),返回浮點(diǎn)類型:
expire_time = "2013-05-21 09:50:35" d = datetime.datetime.strptime(expire_time,"%Y-%m-%d %H:%M:%S") time_sec_float = time.mktime(d.timetuple()) print time_sec_float
9.7、日期格式化為秒數(shù),返回浮點(diǎn)類型:
d = datetime.date.today() time_sec_float = time.mktime(d.timetuple()) print time_sec_float
9.8、秒數(shù)轉(zhuǎn)字符串
time_sec = time.time() print time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time_sec))
http://haohuigou.com/73198.html