上一節(jié)課碎绎,我們重點(diǎn)講到的是字典汰规,他與列表有相同之處踏幻,卻還是有更多的不同。
學(xué)習(xí)編程髓帽,其實(shí)就是學(xué)其神舞蔽,忘其形缸棵,需要靈活運(yùn)用芥驳。目前主流的計(jì)算機(jī)語(yǔ)言大致有Python、Java茬高、C兆旬、C++、JavaScript怎栽、C#丽猬、Ruby、PHP以及Objective-C熏瞄,如果大家熟練掌握了一種脚祟,其它的也是有共同之處的,舉一反三强饮。
嵌套
嵌套含義:將一系列字典存儲(chǔ)在列表中由桌,或?qū)⒘斜碜鳛橹荡鎯?chǔ)在字典中。說(shuō)直白點(diǎn)邮丰,就是看“值”的需要來(lái)做選擇行您。
———————————————————
names_0={'color':'red','points':'55'}
names_1={'color':'green','points':'35'}
names_2={'color':'yellow','points':'25'}
names=[names_0,names_1,names_2]
for name in names:
? ? ? ?print(name)
結(jié)果是:
{'color': 'red', 'points': '55'}
{'color': 'green', 'points': '35'}
{'color': 'yellow', 'points': '25'}
———————————————————
這里是一個(gè)簡(jiǎn)單的將字典嵌套在列表中,先是創(chuàng)建了三個(gè)字典剪廉,再將三個(gè)字典儲(chǔ)存在列表中娃循,再用for語(yǔ)句將三個(gè)創(chuàng)建的字典打印出來(lái)。
這里有沒(méi)有人會(huì)提出疑問(wèn)呢斗蒋?萬(wàn)一列表出包含許多個(gè)字典捌斧,這個(gè)怎么搞?難道要一一的去創(chuàng)建嗎泉沾?
當(dāng)然不用了捞蚂!我們可以像之前一樣,創(chuàng)建一個(gè)空列表爆哑,再通過(guò)函數(shù)range()來(lái)創(chuàng)建多個(gè)字典洞难,這不就可以解決了嗎,咱們還是來(lái)看看我是怎么寫的:
————————————————
names=[]
for name_number in range(10):
? ? ? ?name={'color': 'red', 'points': '55'}
? ? ? ?names.append(name)
print(names)
結(jié)果是:[{'color': 'red', 'points': '55'}, {'color': 'red', 'points': '55'}, {'color': 'red', 'points': '55'}, {'color': 'red', 'points': '55'}, {'color': 'red', 'points': '55'}, {'color': 'red', 'points': '55'}, {'color': 'red', 'points': '55'}, {'color': 'red', 'points': '55'}, {'color': 'red', 'points': '55'}, {'color': 'red', 'points': '55'}]
——————————————————
由于篇幅有限,就只生成了10個(gè)字典队贱。
雖然簡(jiǎn)單的利用計(jì)算機(jī)生成了10個(gè)字典色冀,卻用到的知識(shí)還是挺多的:列表的運(yùn)用、for語(yǔ)句柱嫌、函數(shù)range()锋恬,臨時(shí)變量和添加元素append()的使用,這也是我為什么一直強(qiáng)調(diào)要學(xué)好基礎(chǔ)的原因编丘。
我相信大家在這還是有個(gè)疑問(wèn)与学,這里生成的可是相同的字典,不是我們所想的呀嘉抓,是吧
哈哈索守,我之前學(xué)到這也是這么想的,可是一想抑片,也是這么個(gè)理卵佛,沒(méi)錯(cuò)。我們可以稍稍思考一下敞斋,比如熱門的王者榮耀截汪,英雄聯(lián)盟,里面的元素其實(shí)不用植捎,隊(duì)英雄外無(wú)外乎“大小龍”衙解,“紅藍(lán)buff”,大部分都小兵焰枢,小兵只有三種:遠(yuǎn)程蚓峦,近戰(zhàn),炮車
我們可以生成一批相同的字典医咨,然后再批量去修改就好了枫匾,比起一個(gè)個(gè)添加,我覺(jué)得效率是天差地別拟淮,還是看剛才的例子:
——————————————————
names=[]
for name_number in range(10):
? ? ? ?name={'color': 'red', 'points': '55'}
? ? ? ?names.append(name)
for new_name in names[0:2]:
? ? ? ?if new_name['color']=='red':
? ? ? ? ? ? ?new_name['color']='green'
? ? ? ? ? ? ?new_name['point']='89'
? ? ? ? print(new_name)
結(jié)果是:
{'color': 'green', 'points': '89'}
{'color': 'green', 'points': '89'}
——————————————————
解讀:承接上面的例子干茉,創(chuàng)建了10個(gè)同樣的字典在列表names中,下一部我們使用for
循環(huán)很泊,挑選出前面的兩個(gè)字典角虫,將其儲(chǔ)存在new_name中,再利用if語(yǔ)句的判斷委造,使其執(zhí)行下面的代碼戳鹅,給其賦值,修改字典中的值昏兆,最后再打印結(jié)果枫虏。
看到這里,有沒(méi)有想要去設(shè)計(jì)一下游戲的沖動(dòng)呢?哈哈隶债,不著急腾它,其實(shí)游戲設(shè)計(jì)大多也不是用python設(shè)計(jì)的,但每個(gè)語(yǔ)言都有自己的優(yōu)勢(shì)和不足死讹,沒(méi)有必要去比較瞒滴,沒(méi)有什么是十全十美的。