摘要:嘗射于家圃,有賣(mài)油翁釋擔(dān)而立,睨之,久而不去。康肅問(wèn)曰汝亦知射乎吾射不亦精乎翁曰無(wú)他,但手熟爾??得C忿然曰爾安敢輕吾射翁曰以我酌油知之。
開(kāi)啟變身模式
大家好, 從這一期開(kāi)始,我們會(huì)從小白變身為中等小白,在基礎(chǔ)起步階段有太多的東西我沒(méi)有講到,但是俗話說(shuō)的好,無(wú)他,但手熟爾,只要多多練習(xí),時(shí)間會(huì)是最好的證明,相信我們終有一天會(huì)成為高手,因此從這一系列開(kāi)始,讓我們一起更上一層樓,還是和往常一樣,我也是水平不高,如果有大神發(fā)現(xiàn)文章中的錯(cuò)誤一定要指出哈~
先皮一下,看個(gè)歐陽(yáng)修的<<賣(mài)油翁>>:
陳康肅公堯咨善射,當(dāng)世無(wú)雙,公亦以此自矜。嘗射于家圃,有賣(mài)油翁釋擔(dān)而立,睨之,久而不去。見(jiàn)其發(fā)矢十中八九,但微頷之。List的進(jìn)階用法康肅問(wèn)曰:“汝亦知射乎?吾射不亦精乎?”翁曰:“無(wú)他,但手熟爾?!笨得C忿然曰:“爾安敢輕吾射!”翁曰:“以我酌油知之?!蹦巳∫缓J置于地,以錢(qián)覆其口,徐以杓酌油瀝之,自錢(qián)孔入,而錢(qián)不濕。因曰:“我亦無(wú)他,惟手熟爾。”康肅笑而遣之。
這里我將會(huì)詳細(xì)介紹一些我認(rèn)為非常不錯(cuò)的List的使用方法,至于list 自帶的一些基礎(chǔ)用法,這里不再說(shuō)明,感興趣的朋友們可以看看我的基礎(chǔ)教程: Python 基礎(chǔ)起步 (五) 一定要知道的數(shù)據(jù)類型:初識(shí)List 和 Python 基礎(chǔ)起步 (六) List的實(shí)用技巧大全, 好啦,閑話少說(shuō),讓我們開(kāi)始吧
把其他類型數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)化為L(zhǎng)ist類型
利用list(target)即可實(shí)現(xiàn)把其他類型的數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)化為L(zhǎng)ist類型,十分實(shí)用,我們可以把字符串,元組等數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)化為L(zhǎng)ist,也可以直接創(chuàng)建,像下圖一樣:
print(list()) # 創(chuàng)建空List vowelString = "aeiou" # 把字符串轉(zhuǎn)化為L(zhǎng)ist print(list(vowelString)) vowelTuple = ("a", "e", "i", "o", "u") # 從元組tuple轉(zhuǎn)化為L(zhǎng)ist print(list(vowelTuple)) vowelList = ["a", "e", "i", "o", "u"] # 從List到List print(list(vowelList)) vowelSet = {"a", "e", "i", "o", "u"} # 從Set到List print(list(vowelSet)) Out: [] ["a", "e", "i", "o", "u"] ["a", "e", "i", "o", "u"] ["a", "e", "i", "o", "u"] ["a", "e", "i", "o", "u"]
可能平時(shí)用的比較多的一般是從一個(gè)dict中提取 keys 和 values :
person = { "name":"Peppa Pig", "age":15, "country":"bratian"} person_keys = list(person.keys()) person_values = list(person.values()) print(list(person)) # 如果直接轉(zhuǎn)化一個(gè)字典只會(huì)把keys提取出來(lái) print(list(person.keys())) print(list(person.values())) Out:["name", "age", "country"] ["name", "age", "country"] # 把字典中的Keys提出 ["Peppa Pig", 15, "bratian"] # 把字典中的Values提出
這里大家稍微注意下,如果直接用list(person)會(huì)默認(rèn)等同于person.keys()
List排序方法匯總
總體來(lái)說(shuō),有兩種方法最為便捷,List.sort 或者 sorted(List),具體來(lái)看如何實(shí)現(xiàn),先看升序:
vowels = ["e", "a", "u", "o", "i"] vowels.sort() print("Sorted list Acending:", vowels) # 使用sort Out: Sorted list Acending: ["a", "e", "i", "o", "u"]
vowels = ["e", "a", "u", "o", "i"] print("Sorted list Acending:", sorted(vowels)) # 使用sorted Out:Sorted list Acending: ["a", "e", "i", "o", "u"]
再來(lái)看降序:
vowels = ["e", "a", "u", "o", "i"] vowels.sort(reverse=True) # 使用sort print("Sorted list (in Descending):", vowels) Out: Sorted list (in Descending): ["u", "o", "i", "e", "a"]
vowels = ["e", "a", "u", "o", "i"] print("Sorted list (in Descending):", sorted(vowels,reverse=True)) # 使用sorted方法 Out:Sorted list (in Descending): ["u", "o", "i", "e", "a"]
其實(shí)這里里面還有一個(gè)關(guān)鍵的參數(shù)是key,我們可以自定義一些規(guī)則排序,下面看個(gè)例子,用的是默認(rèn)的len函數(shù)
,讓我們根據(jù)List中每個(gè)元素的長(zhǎng)度來(lái)排序,首先是升序:
vowels = ["I", "live", "at", "Paris", "I","love","Python"] # 使用sort vowels.sort(key=len) print("Sorted by lenth Ascending:", vowels) Out:Sorted by lenth: ["I", "I", "at", "live", "love", "Paris", "Python"]
vowels = ["I", "live", "at", "Paris", "I","love","Python"] # 使用 sorted print("Sorted by lenth Ascending:", sorted(vowels,key=len)) Out:Sorted by lenth Ascending: ["I", "I", "at", "live", "love", "Paris", "Python"]
降序也差不多啦:
vowels = ["I", "live", "at", "Paris", "I","love","Python"] vowels.sort(key=len,reverse=True) print("Sorted by lenth Descending:", vowels) Out:Sorted by lenth Descending: ["Python", "Paris", "live", "love", "at", "I", "I"]
vowels = ["I", "live", "at", "Paris", "I","love","Python"] print("Sorted by lenth Descending:", sorted(vowels,reverse=True)) Out:Sorted by lenth Descending: ["Python", "Paris", "live", "love", "at", "I", "I"]
有關(guān)這個(gè)key我們可以自己定義,請(qǐng)看下面的大栗子:
def takeSecond(elem): return elem[1] random = [(2, 2), (3, 4), (4, 1), (1, 3)] random.sort(key=takeSecond) # sort list with key print("Sorted list:", random) Out: [(4, 1), (2, 2), (1, 3), (3, 4)]
這里因?yàn)榱斜碇械脑囟际窃M,所以我們規(guī)定按照元組的第二個(gè)數(shù)排序,所以結(jié)果如上,默認(rèn)依然是reverse=False ,也就是升序,至于其他有意思的方法大家可以自己開(kāi)發(fā)
逆序輸出List
如果我們想要逆序輸出一個(gè)List,簡(jiǎn)單來(lái)說(shuō)有兩種方法比較好用,切片和reverse,來(lái)看例子:
vowels = ["I", "live", "at", "Paris", "I","love","Python"] print(list(reversed(vowels))) print(list[::-1]) Out:["Python", "love", "I", "Paris", "at", "live", "I"] ["Python", "love", "I", "Paris", "at", "live", "I"]
利用Range生成List
Python里面為我們提供了一個(gè)超好用的方法range(),具體的用法很多,不在這里一一講解啦,但是大家可以看一下它如何和List結(jié)合在一起的:
five_numbers=list(range(5)) #創(chuàng)建0~4的List print(five_numbers) odd_numbers=list(range(1,50,2)) #創(chuàng)建0~50所有的奇數(shù)的List print(odd_numbers) even_numbers=list(range(0,50,2)) #創(chuàng)建0~50所有的偶數(shù)的List print(even_numbers)
其實(shí)很簡(jiǎn)單,用的最多的就是range(start, stop, hop)這個(gè)結(jié)構(gòu),其他的大家可以自行查詢哈
List列表推導(dǎo)式
其實(shí)這個(gè)東西無(wú)非就是為了減少代碼書(shū)寫(xiě)量,比較Pythonic的東西,基礎(chǔ)模板如下:
variable = [out_exp for out_exp in input_list if out_exp == 2]
大家直接看比較麻煩,還是直接上代碼吧:
S = [x**2 for x in range(8)] # 0~7每個(gè)數(shù)的平方存為L(zhǎng)ist V = [2**i for i in range(8)] # 2的 0~7次方 M = [x for x in S if x % 2 == 0] #找出在S里面的偶數(shù) print(S) print(V) print(M) Out: Square of 0 ~7: [0, 1, 4, 9, 16, 25, 36, 49] The x power of 2,(0通過(guò)這個(gè)小栗子大家估計(jì)已經(jīng)明白用法啦,推導(dǎo)式還可以這么用:
verbs=["work","eat","sleep","sit"] verbs_with_ing=[v+"ing" for v in verbs] # 使一組動(dòng)詞成為現(xiàn)在分詞 print(verbs_with_ing) Out:["working", "eating", "sleeping", "siting"]或者加上查詢條件if :
all_numbers=list(range(-7,9)) numbers_positive = [n for n in all_numbers if n>0 ] numbers_negative = [n for n in all_numbers if n<0] devided_by_two = [n for n in all_numbers if n%2==0] print("The positive numbers between -7 to 9 are :",numbers_positive) print("The negative numbers between -7 to 9 are :",numbers_negative ) print("The numbers deveided by 2 without reminder are :",devided_by_two)``` Out:The positive numbers between -7 to 9 are : [1, 2, 3, 4, 5, 6, 7, 8] The negative numbers between -7 to 9 are : [-7, -6, -5, -4, -3, -2, -1] The numbers deveided by 2 without reminder are : [-6, -4, -2, 0, 2, 4, 6, 8]總結(jié)其實(shí)客觀來(lái)講,list在實(shí)際項(xiàng)目中所用的地方有限,特別是處理數(shù)據(jù)量較大的情況下,因?yàn)樗俣葮O慢,但是在一些邊邊角角的地方我個(gè)人用的還挺多,尤其是不求速度的地方,總的來(lái)講List是我個(gè)人比較喜歡的Python
數(shù)據(jù)結(jié)構(gòu),簡(jiǎn)單好用?。。。?!好啦,我要去吃大餐啦,祝大家新年快樂(lè)呀!??!
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/43132.html
摘要:新年快樂(lè)大家好,今天是大年初二,身在國(guó)外沒(méi)有過(guò)年的氛圍,只能踏實(shí)寫(xiě)寫(xiě)文章,對(duì)社區(qū)做點(diǎn)貢獻(xiàn),在此祝大家新年快樂(lè)上一期為大家梳理了一些的進(jìn)階用法,今天我們來(lái)看字典的相關(guān)技巧,我個(gè)人在編程中對(duì)字典的使用非常頻繁,其實(shí)對(duì)于不是非常大的數(shù)據(jù)存儲(chǔ)需求, 新年快樂(lè) 大家好,今天是大年初二,身在國(guó)外沒(méi)有過(guò)年的氛圍,只能踏實(shí)寫(xiě)寫(xiě)文章,對(duì)社區(qū)做點(diǎn)貢獻(xiàn),在此祝大家新年快樂(lè)!上一期為大家梳理了一些List的進(jìn)...
前情回顧 大家好,我又回來(lái)了。今天我會(huì)繼續(xù)和大家分享itertools這個(gè)神奇的自帶庫(kù),首先,讓我們回顧一下上一期結(jié)尾的時(shí)候我們講到的3個(gè)方法: combinations() combinations_with_replacement() permutations() 讓我們對(duì)這3個(gè)在排列組合中經(jīng)常會(huì)使用到的函數(shù)做個(gè)總結(jié) combinations() 基礎(chǔ)概念 模板:combinations...
摘要:返回元組中元素最大值。將列表轉(zhuǎn)換為元組。如果相對(duì)元組排序,通常先得將它轉(zhuǎn)換為列表并使其成為一個(gè)可變對(duì)象,才能獲得使用排序方法,或使用內(nèi)置方法。 比List更安全的數(shù)據(jù)類型 大家好,今天為大家介紹一種更為安全的Python內(nèi)置數(shù)據(jù)類型:tuple(元組),以及它的基礎(chǔ)用法 元組是什么 元組(tuple)是另一種有序的數(shù)據(jù)類型,與list比較類似。主要不同的一點(diǎn)是tuple被創(chuàng)建后就不能對(duì)...
摘要:每個(gè)模塊都有對(duì)應(yīng)的分支內(nèi)容,并且分支內(nèi)容都分為參考資料練習(xí)題交流討論三個(gè)內(nèi)容,我最喜歡的是練習(xí)題,之前都是非正規(guī)軍的學(xué)習(xí),沒(méi)有系統(tǒng)訓(xùn)練過(guò),現(xiàn)在有技能樹(shù)測(cè)評(píng)終于可以把之前散亂的知識(shí)點(diǎn)總結(jié)在一起了。祝大家都能在技能樹(shù)測(cè)評(píng)判斷自己在哪個(gè)級(jí)別的。 通過(guò)《Python技能樹(shù)測(cè)評(píng)》判斷自己在哪個(gè)級(jí)別: ...
摘要:與上面的操作類似,可以使用多種運(yùn)算符和方法來(lái)更改集合的內(nèi)容。通過(guò)修改集合元素方法運(yùn)算符用法通過(guò)修改集合和作用是向集合中添加中所有不存在的元素。 Set是什么 大家好,恰逢初五迎財(cái)神,先預(yù)祝大家新年財(cái)源滾滾??!在上一期詳解tuple元組的用法后,今天我們來(lái)看Python里面最后一種常見(jiàn)的數(shù)據(jù)類型:集合(Set) 與dict類似,set也是一組key的集合,但不存儲(chǔ)value。由于key不...
閱讀 2812·2021-10-14 09:42
閱讀 3619·2021-10-11 10:59
閱讀 2952·2019-08-30 11:25
閱讀 3088·2019-08-29 16:25
閱讀 3233·2019-08-26 17:40
閱讀 1241·2019-08-26 13:30
閱讀 1155·2019-08-26 11:46
閱讀 1337·2019-08-23 15:22