1. 程式人生 > >廖雪峰python3複習總結——day10-2

廖雪峰python3複習總結——day10-2

常用內建模組:

1、datetime:Python處理日期和時間的標準庫。

       我們把1970年1月1日 00:00:00 UTC+00:00時區的時刻稱為epoch time,記為0(1970年以前的時間timestamp為負數),當前時間就是相對於epoch time的秒數,稱為timestamp。

   datetime表示的時間需要時區資訊才能確定一個特定的時間,否則只能視為本地時間。

         如果要儲存datetime,最佳方法是將其轉換為timestamp再儲存,因為timestamp的值與時區完全無關

練習:

import re
from datetime import datetime, timezone, timedelta
def to_timestamp(dt_str, tz_str):

#將字串轉化為datetime
    cnow=datetime.strptime(dt_str,'%Y-%m-%d %H:%M:%S')

#獲得時區
    t=re.split(r'[C:]',tz_str)
    dt=int(t[1])
#設定時區
    tz_utc_set= timezone(timedelta(hours=dt))
    t_now=cnow.replace(tzinfo=tz_utc_set)


#轉換時區
    now_set=t_now.astimezone(timezone(timedelta(hours=8)))
    return now_set.timestamp()

最後一步轉換時區實際上是不必要的,設定好時區之後,timestamp()函式會自動轉換為本地時間,可以試著將hours=8、9、10,就會發現結果不變。

最後一步可直接變為:
    return t_now.timestamp()

2、collection:

  • namedtuple:是一個函式,它用來建立一個自定義的tuple物件,並且規定了tuple元素的個數,並可以用屬性而不是索引來引用tuple的某個元素。
  • deque:使用list儲存資料時,按索引訪問元素很快,但是插入和刪除元素就很慢了,因為list是線性儲存,資料量大的時候,插入和刪除效率很低。deque是為了高效實現插入和刪除操作的雙向列表,適合用於佇列和棧.
  • defaultdict:使用dict時,如果引用的Key不存在,就會丟擲KeyError。如果希望key不存在時,返回一個預設值,就可以用defaultdict.除了在Key不存在時返回預設值,defaultdict

    的其他行為跟dict是完全一樣的。

  • OrderedDict:使用dict時,Key是無序的。在對dict做迭代時,我們無法確定Key的順序。如果要保持Key的順序,可以用OrderedDict。注意,OrderedDict的Key會按照插入的順序排列,不是Key本身排序。OrderedDict可以實現一個FIFO(先進先出)的dict,當容量超出限制時,先刪除最早新增的Key。

  • Counter是一個簡單的計數器。