《金哥百變Python零基礎(chǔ)教程5》~列表

本章知識(shí)點(diǎn) :> 列表

北京地鐵1號(hào)線

復(fù)習(xí):函數(shù)定義
  • y = ax+b 這是數(shù)學(xué)里的一個(gè)直線函數(shù),現(xiàn)在用Python來(lái)實(shí)現(xiàn)這個(gè)函數(shù)(假設(shè)a=2理疙,b=1)
  • 這個(gè)算法的輸入是什么猬错?輸出是什么焕毫?
  • 輸入:x
  • 輸出: y
  • 還記得用def定義函數(shù)嗎絮识?

def line(x):
????a = 2
????b = 1
????y = a * x + b
????return y

y1 = line(4)
print(y1)
y2 = line(5)
print(y2)

  • 易錯(cuò)點(diǎn):a和b要定義在函數(shù)里
  • 易錯(cuò)點(diǎn):函數(shù)一定要return y
    試一下 在線Python
  • 如果a 和 b定義在函數(shù)外面礁苗,又想再函數(shù)里使用弟灼,可以用 global 方法
  • 思考:為什么函數(shù)內(nèi)的a b 和函數(shù)外的 a b默認(rèn)不同步级解?(如果函數(shù)內(nèi)變量名和函數(shù)外想通,會(huì)引起一個(gè)很大的問(wèn)題田绑,
  • 比如我們調(diào)用了很多的系統(tǒng)函數(shù)和其他人的函數(shù)勤哗,非常容易起一個(gè)變量名字和他們函數(shù)內(nèi)的相同,那就天下大亂了Q谇)
  • 所以:每個(gè)函數(shù)內(nèi)的變量是自成一體的芒划,如果要再函數(shù)內(nèi)用外面的變量,可以用global 方法

a = 2
b = 1
def line(x):
????global a,b
????y = a * x + b
????return y
試一下 在線Python


列表
  • 先復(fù)習(xí)一下之前我們掌握的變量類型哦 整數(shù) 浮點(diǎn)數(shù) 字符串 布爾型 (True False) None (None表示什么也沒(méi)有)
  • 這些變量類型叫做基礎(chǔ)變量類型欧穴。
  • 現(xiàn)在要說(shuō)的列表民逼,是組合變量類型。
  • 組合 是什么意思呢涮帘?
樹(shù)木

森林
  • 如果一個(gè)變量是 一顆 樹(shù)木 那么 一個(gè)組合 就是一片森林
  • 代碼塊 取一個(gè)名字拼苍,變成 函數(shù)
  • 把一組相關(guān)的 變量 合到一起,取一個(gè)名调缨,變成 列表
  • 比如:一年級(jí)一班有5個(gè)人疮鲫,分別是小明,小紅弦叶,小飛俊犯,小黃,小麗
    xiaoming = '小明‘
    xiaohong = '小紅‘
    xiaofei = '小飛‘
    xiaohuang = '小黃‘
    xiaoli = '小麗‘
  • 我們可以用 列表 一年級(jí)一班來(lái)組合表示
    yinianyiban = ['小明‘,'小紅‘,'小飛‘,'小黃‘,'小麗‘]
    print(yinianyiban)
    試一下 在線Python
  • 語(yǔ)法是這樣的:


  • 易錯(cuò)點(diǎn):用 [ ] 表示 列表
  • 易錯(cuò)點(diǎn):在列表里也可以寫變量名
  • 易錯(cuò)點(diǎn):在列表里的變量可以是不同類型
    a = 1
    list = [a, 2,3,4, "hello world"]
    print(list)
    試一下 在線Python
  • 這樣說(shuō)還不夠通透伤哺,其實(shí)列表 里還可以放列表
    list = [['小明’, 20],['小紅', 21],['小飛', 20]]
  • 在這個(gè)list里燕侠,分別存儲(chǔ)了3個(gè)list,內(nèi)層的list由 姓名和年齡組合
    list = [
    ['小明’, 20],
    ['小紅', 21],
    ['小飛', 20]
    ]
  • 這樣寫更清楚一點(diǎn)了
  • 兩層的list其實(shí)表達(dá)的是表格結(jié)構(gòu)
姓名 年齡
小明 20
小紅 21
小飛 20
.. ..
  • 你看看是不是表格結(jié)構(gòu)默责?
    試一下 在線Python

列表訪問(wèn)

yinianyiban = ['小明‘,'小紅‘,'小飛‘,'小黃‘,'小麗‘]

  • 看這個(gè)列表贬循,現(xiàn)在有一個(gè)問(wèn)題,就是怎么單獨(dú)取出 某一個(gè)元素 (就是列表里的某個(gè)變量)
  • 解決這個(gè)問(wèn)題之前桃序,需要把列表的隱身部分畫出來(lái)
image.png
  • 有沒(méi)有注意到杖虾,列表下方多了 0, 1, 2, 3, 4 ..
  • 這些數(shù)字表示的是列表元素的下標(biāo)(其實(shí)意思就是位置) 注意:下標(biāo)從 0 開(kāi)始
  • 我們可以用 下標(biāo) 來(lái)訪問(wèn)元素
  • 讀取 ‘小明'
    xm = yinianyiban[0] #下標(biāo)是0 ,就用0訪問(wèn)
    print(xm)
    試一下 在線Python
  • 讀取 ’小黃'
    xh = yinianyiban[3] #下標(biāo)是3媒熊,就用3訪問(wèn)
    print(xh)
    試一下 在線Python
  • 可以讀取奇适,也可以賦值哦~

  • 現(xiàn)在把'小麗'改成 '小李'
    yinianyiban[4] = '小李'
    print(yinianyiban)
    試一下 在線Python

  • 只要簡(jiǎn)單重復(fù) 的把列表里的元素分別讀取和改變坟比,你就會(huì)理解這種方法

  • 思考:如果讀寫表格里的數(shù)據(jù)?
    list = [
    ['小明’, 20],
    ['小紅', 21],
    ['小飛', 20]
    ]
    xm = list[0][0]
    print(xm)
    xm_age = list[0][1]
    print(xm_age)
    試一下 在線Python

  • 請(qǐng)先在線寫一寫之后嚷往,再思考為什么用[0][0]來(lái)訪問(wèn)葛账。


列表函數(shù)
  • 列表有一套自己的函數(shù)
  • 我們只介紹3個(gè)
  • 它們解決3個(gè)常見(jiàn)問(wèn)題
  • 假設(shè)有個(gè)一個(gè)列表
    yinianyiban = ['小明‘,'小紅‘,'小飛‘,'小黃‘,'小麗‘]
  • 1 / 現(xiàn)在只知道有個(gè)人叫 '小紅', 如何根據(jù) ‘小紅' (元素的值),怎么計(jì)算它的 下標(biāo)
    xh = ’小紅‘
    xb = yinianyiban.index(xh) #用index函數(shù)
    試一下 在線Python
  • 易錯(cuò)點(diǎn):列表相關(guān)的函數(shù)調(diào)用方法是用 列表名.函數(shù) (用.來(lái)連接), 記住它
  • 2 / 現(xiàn)在班里來(lái)了新同學(xué) ’小新' ,怎么加入列表
    xx = '小新'
    yinianyiban.append(xx)
  • 用append函數(shù)
  • 3 / 現(xiàn)在有個(gè)同學(xué) '小飛' 轉(zhuǎn)校了,怎么從列表刪除
    del yinianyiban[2]
  • 小飛的下標(biāo)是2皮仁,用del 元素的方法來(lái)刪除元素
  • 4 / 請(qǐng)計(jì)算一下列表里元素總數(shù)
    total = len(yinianyiban)

  • len函數(shù)(之前介紹過(guò))

  • 別問(wèn)我這些功能為什么這么寫籍琳,把他們記住就好。
    試一下 在線Python


for 循環(huán)
  • 我們有一個(gè)列表贷祈,遍歷這個(gè)列表是一種常見(jiàn)的需求 (從第一個(gè)元素到最后一個(gè)元素挨個(gè)取出)
  • 思考一下:用 while 循環(huán)如何做列表遍歷趋急?
  • 輸入:列表

  • 輸出:挨個(gè)打印列表元素

  • print(list[n]) 打印第n個(gè)元素,我們很快找到了重復(fù)的動(dòng)作

    image.png

  • 變成代碼:
    list = [1,2,3,4,5]
    n = 0
    total = len(list)
    while n < total:
    ????print(list[n])
    ????n = n + 1

試一下 在線Python

  • 現(xiàn)在势誊,我們要介紹新的辦法(更簡(jiǎn)單的遍歷一個(gè)列表)
  • 直接上語(yǔ)法:
    for i in list:
    ????print(i)
  • for 循環(huán)呜达,其實(shí)語(yǔ)法不用過(guò)多解釋,for xx in xx 表達(dá)的意思就是從列表里循環(huán)取出
  • for i in list:
  • 注意這里的i粟耻,i是list里的元素查近,在循環(huán)過(guò)程中,i會(huì)依次等于 list[0],list[1],....
    試一下 在線Python
  • for 循環(huán)是更加簡(jiǎn)便的遍歷循環(huán)寫法挤忙。
  • 還記得我說(shuō)的 只有 P0 P1 是編程基礎(chǔ)嗎霜威,其實(shí)后面的知識(shí)都是為了簡(jiǎn)化,簡(jiǎn)便册烈,方便~~

綜合運(yùn)用
地鐵1號(hào)線
  • 有沒(méi)有注意到侥祭,我把地鐵1號(hào)線用一個(gè)紅框框起來(lái)

  • 你猜的沒(méi)錯(cuò),看見(jiàn)這個(gè)紅框我們立即就能想到 列表 ,這就是天生的列表結(jié)構(gòu) 扒牙濉!

  • 問(wèn)題:我們的1號(hào)線地鐵問(wèn)題谈宛,實(shí)現(xiàn)路人問(wèn)路次哈,并且通過(guò)打印

"右走1站"
"右走1站"
...

或者
"左走1站"
"左走1站"
...

來(lái)指路。(考慮特殊情況如果 用戶要去的就是 王府井 站吆录,那么請(qǐng)打印 "現(xiàn)在出站")

  • 最新要求:用戶只要告知站名(如 ”西單“)就可以問(wèn)路窑滞,不需要告訴站號(hào)(如 11)

  • 思考一下,站號(hào)本來(lái)就是不必須的恢筝。

  • "站名轉(zhuǎn)站號(hào)算法"

  • 輸入:站名 輸出 :站號(hào)

  • 看一下原來(lái)的寫法(我用函數(shù)表示了)
    def name2num(end):
    ????#"站名轉(zhuǎn)站號(hào)算法"
    ????if end == '四惠東':
    ????????end_num = 1
    ????if end == '四惠':
    ????????end_num = 2
    ????if end == '大望路':
    ????????end_num = 3
    ????... #if太多我不寫了
    ????return end_num

  • 主程序的代碼:
    start = '?'#具體執(zhí)行時(shí)填寫
    start_num = 0
    end = '?' #具體執(zhí)行時(shí)填寫
    end_num = 0 #默認(rèn)是0哀卫,請(qǐng)用算法計(jì)算

#注意,start和end可以算出num
start_num = name2num(start)
end_num = name2num(end)

fangxiang = ''
zou_num = 0
if start_num == end_num:
????print("現(xiàn)在出站")

if start_num < end_num:
????fangxiang = '右'
????zou_num = end_num - start_num
????a = 0
????while a < zou_num:
????????print(fangxiang+'走1站') #一定要4個(gè)空格
????????a = a + 1

if start_num > end_num:
????fangxiang = '左'
????zou_num = start_num - end_num
????a = 0
????while a < zou_num:
????????print(fangxiang+'走1站') #一定要4個(gè)空格
????????a = a + 1
試一下 在線Python

  • "站名轉(zhuǎn)站號(hào)算法" 現(xiàn)在撬槽,我們用一個(gè)列表來(lái)實(shí)現(xiàn)這個(gè)算法
    list = ['四惠東','四惠','大望路','國(guó)貿(mào)','永安里','建國(guó)門','東單','王府井','天安門東','天安門西','西單','復(fù)興路','南禮士路','木樨地']
  • 輸入:list此改,站名
  • 輸出:站號(hào)(思路,用list的index方法取隱含的下標(biāo)作為站號(hào))

def name2num(list, name):
????i = list.index(name)
????return i+1 #是不是i+1就是原來(lái)的站號(hào)侄柔!
試一下 在線Python

  • 秒殺共啃!

下一章會(huì)先復(fù)習(xí) 列表 的知識(shí)占调,不用擔(dān)心今天的新知識(shí)太多~

p5 知識(shí)點(diǎn)總結(jié):


image.png
目錄

0基礎(chǔ)教程金哥Python自學(xué)筆記P0~變量與運(yùn)算
0基礎(chǔ)教程金哥Python自學(xué)筆記P1~循環(huán)與控制

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市移剪,隨后出現(xiàn)的幾起案子究珊,更是在濱河造成了極大的恐慌,老刑警劉巖纵苛,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件剿涮,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡攻人,警方通過(guò)查閱死者的電腦和手機(jī)取试,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)贝椿,“玉大人想括,你說(shuō)我怎么就攤上這事±硬” “怎么了瑟蜈?”我有些...
    開(kāi)封第一講書人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)渣窜。 經(jīng)常有香客問(wèn)我铺根,道長(zhǎng),這世上最難降的妖魔是什么乔宿? 我笑而不...
    開(kāi)封第一講書人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任位迂,我火速辦了婚禮,結(jié)果婚禮上详瑞,老公的妹妹穿的比我還像新娘掂林。我一直安慰自己,他們只是感情好坝橡,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布泻帮。 她就那樣靜靜地躺著,像睡著了一般计寇。 火紅的嫁衣襯著肌膚如雪锣杂。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,624評(píng)論 1 305
  • 那天番宁,我揣著相機(jī)與錄音元莫,去河邊找鬼。 笑死蝶押,一個(gè)胖子當(dāng)著我的面吹牛踱蠢,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播播聪,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼朽基,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼布隔!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起稼虎,我...
    開(kāi)封第一講書人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤衅檀,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后霎俩,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體哀军,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年打却,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了杉适。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡柳击,死狀恐怖猿推,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情捌肴,我是刑警寧澤蹬叭,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站状知,受9級(jí)特大地震影響秽五,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜饥悴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一坦喘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧西设,春花似錦瓣铣、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至擒滑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間叉弦,已是汗流浹背丐一。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留淹冰,地道東北人库车。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像樱拴,于是被迫代替她去往敵國(guó)和親柠衍。 傳聞我的和親對(duì)象是個(gè)殘疾皇子洋满,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355