python經常使用模塊一

導入整個模塊python

import 模塊名app

導入模塊中的某個具體的功能dom

from 模塊名 import 模塊中的方法名(功能)函數

import random
from random import randint

random 隨機模塊spa

import random
#取隨機小數

print(random.random())                #0~1 之間的隨機小數
print(random.uniform(1,10))           #1~10 之間的隨機小數

 

取隨機整數指針

import random
print(random.randint(0,1))              #0~1之間的整數
print(random.randrange(0,5))          #0~5之間的整數
print(random.randrange(0,5,2))       #0~5之間步長爲2 的整數

 

隨機抽取code

l = [1,2,"a",{"k":"v"},(1,2,4)]
print(random.choice(l))                #隨機抽取一個
print(random.sample(l,3))            #隨機抽取n個

 

打亂順序orm

import random
k = [1,2,"ac",{"k","v"},(1,2,3)]
random.shuffle(k)
print(k)

 

事例: 輸出6位純數字blog

import random
def get_code(n=6):
    s = ""
    for i in range(n):
        num = random.randint(0,9)
        s += str(num)
    return s
print(get_code(6))

 

Collections隊列

1.Counter 計數器

2.defaultdict 默認值字典

3.OrderedDict 有序字典

 

Counter 計數

from collections import Counter
print(Counter("凌寒獨自開,哈哈哈"))

lst = ["selina","Jerome","Jerry","selina"]
c = Counter(lst)
print(c)

運行結果:

 Counter({'哈': 3, '凌': 1, '寒': 1, '獨': 1, '自': 1, '開': 1, ',': 1})
 Counter({'selina': 2, 'Jerome': 1, 'Jerry': 1})

 Process finished with exit code 0

 

defaultdict 默認值字典

from collections import defaultdict
selina = defaultdict(lambda:6)        #callable 可調用的, 字典是空的
print(selina["LL"])           #從字典向外拿數據, 字典是空的, key:callable()
print(selina["Frank"])         #這裏的[] 和get() 不是一回事兒
print(selina)
print(selina.get("LL"))

運行結果:

 6
 6
 defaultdict(<function <lambda> at 0x0000027CAB741E18>, {'ll': 6, 'Frank': 6})
 6

 

OrderedDict  有序字典

from collections import OrderedDict
dic = OrderedDict()
dic["selina"] = "新加坡"
dic["evelyn"] = "法國"
print(dic)
print(dic.get("selina"))
print(dic.values())
print(dic["evelyn"])

運行結果:

 OrderedDict([('selina', '新加坡'), ('evelyn', '法國')])
 新加坡
 odict_values(['新加坡', '法國'])
 法國

 

 

棧Stack(FILO)
特色: 先進後出

複製代碼
 1 class StackFullException(Exception):
 2     pass
 3 
 4 class StackEmptyException(Exception):
 5     pass
 6 
 7 class Stack:
 8 
 9     def __init__(self, size):
10         self.size = size
11         self.lst = []   # 存放數據的列表
12         self.top = 0    # 棧頂指針
13 
14     # 入棧
15     def push(self, el):
16         if self.top >= self.size:
17             raise StackFullException("your stack is full!!!!!")
18         self.lst.insert(self.top, el)   # 放元素
19         self.top += 1   # 棧頂指針向上移動一下
20 
21     # 出棧
22     def pop(self):
23         if self.top == 0:
24             raise StackEmptyException("your stack is empty!!!!!")
25         self.top-=1
26         el = self.lst[self.top]
27         return el
28 s = Stack(4)
29 s.push('bob')
30 s.push('jack')
31 s.push('Peak')
32 s.push('jary')
33 print(s.pop())
34 print(s.pop())
35 print(s.pop())
36 print(s.pop())
37 
38 
39 import queue
40 q= queue.Queue()
41 q.put('中國')
42 q.put('法國')
43 q.put('美國')
44 print(q.get())
45 print(q.get())
46 print(q.get())
47 
48 結果
49 jary
50 Peak
51 jack
52 bob
53 中國
54 法國
55 美國
複製代碼

隊列Queue(FIFO)
特色: 先進先出

複製代碼
 1 from collections import deque
 2 d = deque()         # 建立雙向隊列
 3 d.append('娃哈哈')  # 在右側添加
 4 d.append('QQ星')
 5 d.append('爽歪歪')
 6 d.appendleft('芒果')  # 在左邊添加
 7 d.appendleft('榴蓮')
 8 d.appendleft('蘋果')
 9 print(d.pop())      # 從右邊拿數據
10 print(d.pop())
11 print(d.pop())
12 print(d.popleft())  # 從左邊拿數據
13 print(d.popleft())
14 print(d.popleft())
15 結果
16 爽歪歪
17 QQ星
18 娃哈哈
19 蘋果
20 榴蓮
21 芒果
複製代碼

time時間模塊

複製代碼
  1 python程序中,時間一共有三種格式
  2 時間戳時間,float時間(給計算機用的): 1542072130.3895912
  3     英國倫敦 1970-1-1 0:0:0  0時區
  4     北京時間 1970-1-1 8:0:0
  5 結構化時間(tuple時間)
  6 格式化時間,str時間(給用戶看的): '2018-11-13 9:21:50'
  7 時間格式轉換
  8     時間戳時間 <-結構化時間(tuple時間)-> 格式化時間
  9 
 10 時間格式:
 11 %y 兩位數的年份表示(00-99)
 12 %Y 四位數的年份表示(000-9999)
 13 %m 月份(01-12)
 14 %d 月內中的一天(0-31)
 15 %H 24小時制小時數(0-23)
 16 %I 12小時制小時數(01-12)
 17 %M 分鐘數(00=59)
 18 %S 秒(00-59)
 19 %a 本地簡化星期名稱
 20 %A 本地完整星期名稱
 21 %b 本地簡化的月份名稱
 22 %B 本地完整的月份名稱
 23 %c 本地相應的日期表示和時間表示
 24 %j 年內的一天(001-366)
 25 %p 本地A.M.或P.M.的等價符
 26 %U 一年中的星期數(00-53)星期天爲星期的開始
 27 %w 星期(0-6),星期天爲星期的開始
 28 %W 一年中的星期數(00-53)星期一爲星期的開始
 29 %x 本地相應的日期表示
 30 %X 本地相應的時間表示
 31 %Z 當前時區的名稱
 32 %% %號自己
 33 
 34 
 35 導入時間模塊
 36 import time
 37 認識一下三種時間格式
 38 print(time.time())      # 時間戳時間(從1970-01-01 00:00:00開始通過的秒)
 39 print(time.strftime('%Y-%m-%d %H:%M:%S'))  # 格式化時間
 40 print(time.localtime())  # 北京時間(結構化時間)
 41 結果
 42 1545826164.0164113
 43 2018-12-26 20:09:24
 44 time.struct_time(tm_year=2018, tm_mon=12, tm_mday=26, tm_hour=20, tm_min=9, tm_sec=24, tm_wday=2, tm_yday=360, tm_isdst=0)
 45 
 46 print(time.strftime('%c'))
 47 time.gmtime(時間戳)    #UTC時間,與英國倫敦當地時間一致
 48 time.localtime(時間戳) #當地時間,例如咱們如今在北京執行這個方法:與UTC時間相差8小時,UTC時間+8小時 = 北京時間
 49 
 50 
 51 結構化時間(python的時間)
 52 print(time.localtime())
 53 t = time.localtime()
 54 print(t.tm_year)
 55 print(t.tm_mon)
 56 print(t.tm_min)
 57 結果
 58 time.struct_time(tm_year=2018, tm_mon=12, tm_mday=26, tm_hour=20, tm_min=23, tm_sec=20, tm_wday=2, tm_yday=360, tm_isdst=0)
 59 2018
 60 12
 61 23
 62 
 63 
 64 時間格式之間的轉換問題
 65 格式化時間轉換戳時間
 66 #先將格式化時間轉換爲結構化時間,而後將結構化時間轉換爲時間戳時間
 67 ret = time.strptime('2008-8-8','%Y-%m-%d')
 68 print(ret)
 69 stmp = time.mktime(ret)
 70 print(stmp)
 71 結果
 72 time.struct_time(tm_year=2008, tm_mon=8, tm_mday=8, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=221, tm_isdst=-1)
 73 1218124800.0
 74 
 75 
 76 時間戳轉換格式化時間
 77 先將時間戳轉換爲結構化時間,而後將結構化看時間轉換爲格式化時間
 78 ret = time.localtime(1500000000)
 79 print(ret)
 80 str_time = time.strftime('%Y-%m-%d %H:%M:%S',ret)
 81 print(str_time)
 82 結果
 83 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)
 84 2017-07-14 10:40:00
 85 
 86 
 87 1.顯示當前時間24小時以前的 年月日 時分秒
 88 方法一 :
 89 計算出1970年到如今通過的秒,而後減去一天的秒,而後轉換爲格式化時間
 90 t1 = time.time()
 91 print(t1)
 92 t2 = t1 - (60*60*24)
 93 print(t2)
 94 t3 = time.localtime(t2)
 95 print(t3)
 96 t4 = time.strftime('%Y-%m-%d %H:%M:%S',t3)
 97 print(t4)
 98 結果
 99 1545826916.4369211
100 1545740516.4369211
101 time.struct_time(tm_year=2018, tm_mon=12, tm_mday=25, tm_hour=20, tm_min=21, tm_sec=56, tm_wday=1, tm_yday=359, tm_isdst=0)
102 2018-12-25 20:21:56
103 
104 方法二
105 打印結構化時間,而後print進行填充,填充tm_mday天減1
106 t1 = time.localtime()
107 print(t1)
108 print('%s-%s-%s %s:%s:%s'%(
109 t1.tm_year,
110 t1.tm_mon,
111 t1.tm_mday-1,
112 t1.tm_hour,
113 t1.tm_min,
114 t1.tm_sec))
115 結果
116 time.struct_time(tm_year=2018, tm_mon=12, tm_mday=26, tm_hour=20, tm_min=13, tm_sec=24, tm_wday=2, tm_yday=360, tm_isdst=0)
117 2018-12-25 20:13:24
118 
119 
120 2.顯示當前月的第一天的0:0:0的時間戳時間
121 先將時間轉化爲結構化時間,而後轉化爲格式化時間
122 now = time.localtime()
123 print(now)
124 str3 = time.strftime('%Y-%m-1 0:0:0',now)
125 print(str3)
126 ret2 = time.strptime(str3,'%Y-%m-%d 0:0:0')
127 print(ret2)
128 print(time.mktime(ret2))
129 結果
130 time.struct_time(tm_year=2018, tm_mon=12, tm_mday=26, tm_hour=20, tm_min=14, tm_sec=16, tm_wday=2, tm_yday=360, tm_isdst=0)
131 2018-12-1 0:0:0
132 time.struct_time(tm_year=2018, tm_mon=12, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=335, tm_isdst=-1)
133 1543593600.0
134 
135 方法二
136 now = time.localtime()
137 print(now)
138 str1 = time.strftime('%Y-%m',now)
139 print(str1)
140 str2 = time.strptime(str1,'%Y-%m')
141 print(str2)
142 print(time.mktime(str2)
143 結果
144 time.struct_time(tm_year=2018, tm_mon=12, tm_mday=26, tm_hour=20, tm_min=14, tm_sec=40, tm_wday=2, tm_yday=360, tm_isdst=0)
145 2018-12
146 time.struct_time(tm_year=2018, tm_mon=12, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=335, tm_isdst=-1)
147 1543593600.0
複製代碼

functools模塊
wraps: 能夠改變一個函數的名字,註釋...

複製代碼
 1 from functools import wraps
 2 def wrapper(fn):
 3     @wraps(fn)      # 把inner的名字改變成原來的func
 4     def inner(*args,**kwargs):
 5         print('執行前')
 6         ret = fn(*args,**kwargs)
 7         print('執行後')
 8         return ret
 9     return inner
10 @wrapper        # func = wrapper(func)
11 def func():
12     print('bob')
13 print(func.__name__)
14 結果
15 func
複製代碼

map 映射 reduce 概括

複製代碼
 1 from functools import reduce
 2 def func(a, b):
 3     return a + b    # 0+1+4+7+2+5+8+3+6+9 累加
 4 ret = reduce(func, [1,4,7,2,5,8,3,6,9])
 5 func(func(func(0, 1),4),7)
 6 print(ret)
 7 print(reduce(lambda x, y:x + y, [i for i in range(101)]))
 8 
 9 執行流程
10 會把咱們每個數據交給func去執行,把默認值做爲第一個參數傳遞給函數
11 第二個參數就是你這個序列中的第一個數據
12 接下來,把剛纔返回的結果做爲第一個參數傳遞個a
13 繼續吧剛纔的結果給第一個參數,把第三個數據傳遞給b
14 
15 結果
16 45
17 5050
複製代碼

partial偏函數,把函數的參數固定

複製代碼
 1 from functools import partial
 2 def chi(zhushi, fushi):
 3     print(zhushi, fushi)
 4 # 固定函數中某些參數的值
 5 chi2 = partial(chi, fushi="小辣椒")
 6 chi2("大米飯")
 7 chi2("小米飯")
 8 chi2("白米飯")
 9 結果
10 大米飯 小辣椒
11 小米飯 小辣椒
12 白米飯 小辣椒
相關文章
相關標籤/搜索