導入整個模塊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 白米飯 小辣椒