time模塊
和時間有關係的咱們就要用到時間模塊。在使用模塊以前,應該首先導入這個模塊。html
#經常使用方法 1.time.sleep(secs) (線程)推遲指定的時間運行。單位爲秒。 2.time.time() 獲取當前時間戳
表示時間的三種方式python
在Python中,一般有這三種方式來表示時間:時間戳、元組(struct_time)、格式化的時間字符串:app
(1)時間戳(timestamp) :一般來講,時間戳表示的是從1970年1月1日00:00:00開始按秒計算的偏移量。咱們運行「type(time.time())」,返回的是float類型。post
(2)格式化的時間字符串(Format String): ‘1999-12-06’url
%y 兩位數的年份表示(00-99) %Y 四位數的年份表示(000-9999) %m 月份(01-12) %d 月內中的一天(0-31) %H 24小時制小時數(0-23) %I 12小時制小時數(01-12) %M 分鐘數(00=59) %S 秒(00-59) %a 本地簡化星期名稱 %A 本地完整星期名稱 %b 本地簡化的月份名稱 %B 本地完整的月份名稱 %c 本地相應的日期表示和時間表示 %j 年內的一天(001-366) %p 本地A.M.或P.M.的等價符 %U 一年中的星期數(00-53)星期天爲星期的開始 %w 星期(0-6),星期天爲星期的開始 %W 一年中的星期數(00-53)星期一爲星期的開始 %x 本地相應的日期表示 %X 本地相應的時間表示 %Z 當前時區的名稱 %% %號自己
(3)元組(struct_time) :struct_time元組共有9個元素共九個元素:(年,月,日,時,分,秒,一年中第幾周,一年中第幾天等)spa
索引(Index) | 屬性(Attribute) | 值(Values) |
---|---|---|
0 | tm_year(年) | 好比2011 |
1 | tm_mon(月) | 1 - 12 |
2 | tm_mday(日) | 1 - 31 |
3 | tm_hour(時) | 0 - 23 |
4 | tm_min(分) | 0 - 59 |
5 | tm_sec(秒) | 0 - 60 |
6 | tm_wday(weekday) | 0 - 6(0表示週一) |
7 | tm_yday(一年中的第幾天) | 1 - 366 |
8 | tm_isdst(是不是夏令時) | 默認爲0 |
首先,咱們先導入time模塊,來認識一下python中表示時間的幾種格式:線程
#導入時間模塊 >>>import time #時間戳 >>>time.time() 1500875844.800804 #時間字符串 >>>time.strftime("%Y-%m-%d %X") '2017-07-24 13:54:37' >>>time.strftime("%Y-%m-%d %H-%M-%S") '2017-07-24 13-55-04' #時間元組:localtime將一個時間戳轉換爲當前時區的struct_time time.localtime() time.struct_time(tm_year=2017, tm_mon=7, tm_mday=24, tm_hour=13, tm_min=59, tm_sec=37, tm_wday=0, tm_yday=205, tm_isdst=0)
小結:時間戳是計算機可以識別的時間;時間字符串是人可以看懂的時間;元組則是用來操做時間的code
幾種格式之間的轉換orm
#時間戳-->結構化時間 #time.gmtime(時間戳) #UTC時間,與英國倫敦當地時間一致 #time.localtime(時間戳) #當地時間。例如咱們如今在北京執行這個方法:與UTC時間相差8小時,UTC時間+8小時 = 北京時間 >>>time.gmtime(1500000000) time.struct_time(tm_year=2017, tm_mon=7, tm_mday=14, tm_hour=2, tm_min=40, tm_sec=0, tm_wday=4, tm_yday=195, tm_isdst=0) >>>time.localtime(1500000000) time.struct_time(tm_year=2017, tm_mon=7, tm_mday=14, tm_hour=10, tm_min=40, tm_sec=0, tm_wday=4, tm_yday=195, tm_isdst=0) #結構化時間-->時間戳 #time.mktime(結構化時間) >>>time_tuple = time.localtime(1500000000) >>>time.mktime(time_tuple) 1500000000.0
#結構化時間-->字符串時間 #time.strftime("格式定義","結構化時間") 結構化時間參數若不傳,則顯示當前時間 >>>time.strftime("%Y-%m-%d %X") '2017-07-24 14:55:36' >>>time.strftime("%Y-%m-%d",time.localtime(1500000000)) '2017-07-14' #字符串時間-->結構化時間 #time.strptime(時間字符串,字符串對應格式) >>>time.strptime("2017-03-16","%Y-%m-%d") time.struct_time(tm_year=2017, tm_mon=3, tm_mday=16, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=75, tm_isdst=-1) >>>time.strptime("07/24/2017","%m/%d/%Y") time.struct_time(tm_year=2017, tm_mon=7, tm_mday=24, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=205, tm_isdst=-1)
#結構化時間 --> %a %b %d %H:%M:%S %Y串 #time.asctime(結構化時間) 若是不傳參數,直接返回當前時間的格式化串 >>>time.asctime(time.localtime(1500000000)) 'Fri Jul 14 10:40:00 2017' >>>time.asctime() 'Mon Jul 24 15:18:33 2017' #時間戳 --> %a %b %d %H:%M:%S %Y串 #time.ctime(時間戳) 若是不傳參數,直接返回當前時間的格式化串 >>>time.ctime() 'Mon Jul 24 15:19:07 2017' >>>time.ctime(1500000000) 'Fri Jul 14 10:40:00 2017'

collections模塊
方法一:from collections import Counterhtm
Counter類的目的是用來跟蹤值出現的次數。它是一個無序的容器類型,以字典的鍵值對形式存儲,其中元素做爲key,其計數做爲value。計數值能夠是任意的Interger(包括0和負數)。Counter類和其餘語言的bags或multisets很類似。
c = Counter('abcdeabcdabcaba') print c 輸出:Counter({'a': 5, 'b': 4, 'c': 3, 'd': 2, 'e': 1})
方法二:from collections import namedtuple
命名元組
我們知道tuple
能夠表示不變集合,例如,一個點的二維座標就能夠表示成:
>>> p = (1, 2)
可是,看到(1, 2),很難看出這個tuple是用來表示一個座標的。
這時,namedtuple
就派上了用場:
a = nametuple('alex',['x','y']) p = alex(1,2) p.x p.y 1 2
類似的,若是要用座標和半徑表示一個圓,也能夠用namedtuple
定義:
#namedtuple('名稱', [屬性list]): Circle = namedtuple('Circle', ['x', 'y', 'r'])
方法三:from collections import defaultdict
默認字典
la = [('紅色',1),('黃色',1),('綠色',1),('藍色',1),('紅色',5),('綠色',1),('綠色',1),('綠色',1)] 計算各顏色的數量,格式----{'紅色': 6, '黃色': 1, '綠色': 4, '藍色': 1}

li = [
{'name':'alex','hobby':'抽菸'},
{'name':'alex','hobby':'喝酒'},
{'name':'alex','hobby':'燙頭'},
{'name':'alex','hobby':'撩妹'},
{'name':'wusir','hobby':'小寶劍'},
{'name':'wusir','hobby':'游泳'},
{'name':'wusir','hobby':'打牌'},
{'name':'太白','hobby':'燙頭'},
{'name':'太白','hobby':'洗腳'},
{'name':'太白','hobby':'開車'},
]
打印出以下格式:{'alex': ['抽菸', '喝酒', '燙頭', '撩妹'], 'wusir': ['小寶劍', '游泳', '打牌'], '太白': ['燙頭', '洗腳', '開車']}
j = defaultdict(list) # {'dict':[]} for i in li: if j.get(i['name']): j[i['name']].append(i['hobby']) else: j[i['name']] = [i['hobby']] print(dict(j))
方法四:from collections import deque
使用list存儲數據時,按索引訪問元素很快,可是插入和刪除元素就很慢了,由於list是線性存儲,數據量大的時候,插入和刪除效率很低。
deque是爲了高效實現插入和刪除操做的雙向列表,適合用於隊列和棧:
>>> from collections import deque >>> q = deque(['a', 'b', 'c']) >>> q.append('x') >>> q.appendleft('y') >>> q deque(['y', 'a', 'b', 'c', 'x'])
deque除了實現list的append()
和pop()
外,還支持appendleft()
和popleft()
,這樣就能夠很是高效地往頭部添加或刪除元素。
datetime,timedelta
from datetime import datetime,timedelta print(datetime.now()) # 時間對象 f = datetime.timestamp(datetime.now()) # 將時間對象轉換成時間戳 print(f) print(datetime.fromtimestamp(f)) # 將時間戳轉換成時間對象 print(datetime.strptime('2018-11-30','%Y-%m-%d')) # 將字符串轉成時間對象 f = datetime.now() print(datetime.strftime(f,'%Y-%m-%d')) # 將時間對象轉成字符串 print(datetime.now() - timedelta(weeks=1)) # 重點記*************** # 參數: seconds(秒) microseconds(微秒) milliseconds(毫秒) minutes(分鐘) hours(小時) weeks(周)