Day20

二分法

算法:是高效解決問題的辦法
算法之二分法
需求:有一個按照從小到大順序排列的數(shù)字列表
需要從數(shù)字列表中找到我們想要的那一個數(shù)字如何高效椒舵??

nums=[-3,4,7,10,13,21,43,77,89]
find_num=10

nums=[-3,4,6,8,,45,-12,55]
nums.sort()
print(nums)

方案一:整體遍歷效率太低
for num in nums:
    if num == find_num:
        print('find it')
        break

方案二:二分法
def binary_search(find_num,列表):
    mid_val=找到列表中間的值
    if find_num > mid_val:
        # 接下來的查找應該是在列表的右半部分
        列表=列表切片右半部分
        binary_search(find_num,列表)
    elif find_num < mid_val:
        # 接下來的查找應該是在列表的左半部分
        列表=列表切片左半部分
        binary_search(find_num,列表)
    else:
        print('find it')

nums=[-3,4,7,10,13,21,42,43,77,89]
find_num=8
def binary_search(find_num,l):
    print(l)
    if len(l) == 0:
        print('找的值不存在')
        return
    mid_index=len(l) //2
    
    if find_num > l[mid_index]:
        # 接下來的查找應該是在列表的右半部分
        l=l[mid_index+1:]
        binary_srarch(find_num,l)
    elif find_num < l[mind_index]:
        # 接下來的查找應該是在列表的左半部分
        l=l[:mid_index]
        binary_search(find_num,l)
    else:
        print('find it')
binary_search(find_num,nums)

面向過程編程思想

編程思想/范式

面向過程的編程思想:
核心是‘過程’二字洪鸭,過程即流程蒲列,指的是做事的步驟:先什么颜屠,再什么后干什么
基于該思想編寫程序就好比在設計一條流水線

優(yōu)點:復雜的問題流程化,進而簡單化
缺點:擴展性差

面向過程的編程思想應用場景解析:
1.不是所有的軟件都需要頻繁更迭:比如編寫腳本
2.即便是一個軟件需要頻繁更迭康嘉,也并不代表這個軟件所有的組成部分都需要一起更迭

匿名函數(shù)

def用于定義有名函數(shù)

def func(x,y):
    return x+y

print(func)

lambda用于定義匿名函數(shù)

print(lambda x,y:x+y)

調(diào)用匿名函數(shù)

方式一:
res=(lambda x,y:x+y)(1,2)
print(res)

方式二:
func = lambda x,y:x+y
res=func(1,2)
print(res)

匿名用于臨時調(diào)用一次的場景:更多的是將匿名與其他函數(shù)配合使用

匿名函數(shù)的應用

salaries={
'siry':3000,
'tom':7000,
'lili':10000,
'jack':2000
}
# 需求1:找出薪資最高的那個人=》lili
res=max([3,200,11,300,399])
print(res)

res=max(salaries)
print(res)


salaries={
'siry':3000,
'tom':7000,
'lili':10000,
'jack':2000
}
# 迭代出的內(nèi)容    比較的值
# 'siry'         3000
# 'tom'          7000
# 'lili'         10000
# 'jack'         2000

def func(k):
    return salaries[k]

# ========================max的應用
res=max(salaries,key=func) # 返回值 =func('siry')
print(res)

res=max(salaries,key=lambda k:salaries[k])
print(res)

# ========================min的應用
res=min(salaries,key=lambda k:salaries[k])
print(res)


# ========================sorted排序
salaries={
    'siry':3000,
    'tom':7000,
    'lili':10000,
    'jack':2000
}
res=sorted(salaries,key=lambda k:salaries[k],reverse=True)
print(res)

# ========================map的應用(了解)
l=['alex','lxx','wxx','薛賢妻']
new_l=(name+'_dsb' for name in l)
print(new_l)

res=map(lambda name:name+'_dsb',l)
print(res) # 生成器
# ========================filter的應用(了解)
l=['alex_sb','lxx_sb','wxx','薛賢妻']
res=(name for name in l if name.endswith('sb'))
print(res)

res=filter(lambda name:name.endswith('sb'),l)
print(res)

# ========================reduce的應用(了解)
from functools import reduce
res=reduce(lambda x,y:x+y,[1,2,3],10) # 16
print(res)

res=reduce(lambda x,y:x+y,['a','b','c']) # 'a','b'
print(res)

模塊

一、什么是模塊:

模塊就是一系列功能的集合體籽前,分為三大類

1.內(nèi)置的模塊
2.第三方的模塊
3.自定義的模塊

一個python文件本身就是一個模塊亭珍,文件名m.py,模塊名叫m

ps:模塊有四種形式
1.使用python編寫的.py文件
2.已被編譯為共享庫或dll的c或c++擴展
3.把一系列模塊組織到一起的文件夾(注:文件夾下有一個init.py文件枝哄,該文件夾稱之為包)
4.使用c編寫并鏈接到python解釋器的內(nèi)置模塊

二肄梨、為何有用模塊

1.內(nèi)置與第三方的模塊拿來就用,無需定義挠锥,這種拿來主義众羡,可以極大地提升自己的開發(fā)效率

2.自定義的模塊
可以將程序的各部分功能提取出來放到一模塊中為大家共享使用
好處是減少了代碼冗余,程序組織結構更加清晰

三蓖租、怎么用

y=333
z=444
import foo

1.首次導入模塊會發(fā)生3件事

  • 執(zhí)行foo.py
  • 產(chǎn)生foo.py的名稱空間粱侣,將foo.py運行過程中產(chǎn)生的名字都丟到foo的名稱空間中
  • 在當前文件中產(chǎn)生的有一個名字foo,該名字指向2中產(chǎn)生的名稱空間

之后的導入菜秦,都是直接引用首次導入產(chǎn)生的foo.py名稱空間甜害,不會重復執(zhí)行代碼

import foo
import foo
import foo
import foo

2.引用:

print(foo.x)
print(foo.get)
print(foo.change)

強調(diào)1:模塊名.名字,是指名道姓地問某一個模塊要名字對應的值球昨,不會與當前名稱空間的名字發(fā)生沖突

x=1111111
print(x)
print(foo.x)

強調(diào)2:無論是查看還是修改操作的都是模塊本身尔店,與調(diào)用位置無關

import foo

x=33333
foo.get()

foo.change()
print(x)

print(foo.x)
foo.get()

3.可以以逗號為分隔符在一行導入多個模塊

import time
import foo
import m

不建議在一行同時導入多個模塊

import time ,foo,m

4.導入模塊的規(guī)范

1.python內(nèi)置模塊
2.第三方模塊
3.程序員自定義模塊

import time
import sys

import 第三方1
import第三方2

import 自定義模塊1
import自定義模塊2
import自定義模塊3

5.import....as....

import foo as f # f=foo
f.get()

import abcdefgadfadfa
abcdefgadfadfa.f1
abcdefgadfadfa.f2
abcdefgadfadfa.f3

import abcdefgadfadfa as mmm

mmm.f1
mmm.f2
mmm.f3

6.模塊是第一類對象

import foo

7.自定義模塊的命名應該采取純小寫+下劃線的風格

8.可以在函數(shù)內(nèi)導入模塊

def func():
    import foo
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市主慰,隨后出現(xiàn)的幾起案子嚣州,更是在濱河造成了極大的恐慌,老刑警劉巖共螺,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件该肴,死亡現(xiàn)場離奇詭異,居然都是意外死亡藐不,警方通過查閱死者的電腦和手機匀哄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來雏蛮,“玉大人涎嚼,你說我怎么就攤上這事√舯” “怎么了法梯?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我立哑,道長夜惭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任铛绰,我火速辦了婚禮诈茧,結果婚禮上,老公的妹妹穿的比我還像新娘捂掰。我一直安慰自己若皱,他們只是感情好,可當我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布尘颓。 她就那樣靜靜地躺著,像睡著了一般晦譬。 火紅的嫁衣襯著肌膚如雪疤苹。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天敛腌,我揣著相機與錄音卧土,去河邊找鬼。 笑死像樊,一個胖子當著我的面吹牛尤莺,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播生棍,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼颤霎,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了涂滴?” 一聲冷哼從身側響起友酱,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎柔纵,沒想到半個月后缔杉,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡搁料,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年或详,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片郭计。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡霸琴,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出拣宏,到底是詐尸還是另有隱情沈贝,我是刑警寧澤,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布勋乾,位于F島的核電站宋下,受9級特大地震影響嗡善,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜学歧,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一罩引、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧枝笨,春花似錦袁铐、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至徙融,卻和暖如春洒缀,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背欺冀。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工树绩, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人隐轩。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓饺饭,卻偏偏與公主長得像,于是被迫代替她去往敵國和親职车。 傳聞我的和親對象是個殘疾皇子瘫俊,可洞房花燭夜當晚...
    茶點故事閱讀 45,060評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 模塊和包 一 模塊 1 什么是模塊军援? 常見的場景:一個模塊就是一個包含了python定義和聲明的文件,文件名就是...
    go以恒閱讀 2,275評論 0 4
  • Distutils可以用來在Python環(huán)境中構建和安裝額外的模塊称勋。新的模塊可以是純Python的胸哥,也可以...
    MiracleJQ閱讀 3,075評論 0 1
  • 一、表單驗證 前言 在Flask項目開發(fā)中針對提交表單的校驗赡鲜,可以使用Flask-WTF擴展庫進行快速的字段校驗空厌,...
    曉曉的忍兒閱讀 1,450評論 0 2
  • 概要 64學時 3.5學分 章節(jié)安排 電子商務網(wǎng)站概況 HTML5+CSS3 JavaScript Node 電子...
    阿啊阿吖丁閱讀 9,208評論 0 3
  • 藏品名稱: : 秦半兩《禮器》 秦始皇一統(tǒng)六國,開創(chuàng)了中國統(tǒng)一的新紀元银酬,秦始皇 是 治世之才嘲更!秦始皇開創(chuàng)了很多歷...
    A智和文化閱讀 395評論 0 0