您好,登錄后才能下訂單哦!
這篇文章主要介紹了python基礎(chǔ)入門(mén)之列表的示例分析,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
因?yàn)樽罱居衟ython項(xiàng)目維護(hù),所以把python的基礎(chǔ)入門(mén)的書(shū)整理一遍,因?yàn)橛行┩浟?,同時(shí)在看<<python編程>>這本書(shū)的時(shí)候覺(jué)得對(duì)有基礎(chǔ)的有很多的贅余,打算直接整理不同之處。
因?yàn)閜ython 有2版本和3版本,如果新學(xué)的話,建議直接3版本,2版本已經(jīng)不會(huì)再升級(jí)了,也就是不再維護(hù)了。
同時(shí)也規(guī)勸一句,如果是用python專門(mén)去做網(wǎng)站的話,那么是不建議的,因?yàn)檫@不是python的強(qiáng)項(xiàng)。同時(shí)也不要誤以為python動(dòng)態(tài)語(yǔ)言性能效率就不適合做一些服務(wù),因?yàn)橛行┓?wù)性能不是一個(gè)瓶頸,可能問(wèn)題在網(wǎng)絡(luò)一頭等。
總之一句話,py發(fā)展這么快,一個(gè)是因?yàn)樯鐓^(qū),同時(shí)也是因?yàn)閜ython這門(mén)語(yǔ)言的設(shè)計(jì)上,那么就先來(lái)看下列表吧,因?yàn)樘S昧?。噢,如果你還不會(huì)裝python,那么直接百度吧,建議一開(kāi)始直接exe安裝。
在此之前呢,先介紹一個(gè)string類型,因?yàn)閟trign類型的介紹很簡(jiǎn)短,那么就直接放到這一小節(jié)中。
name="jack rose"; print(name.title())
那么它會(huì)輸出,Jack Rose,這個(gè)title就是用來(lái)首字母大寫(xiě)的。
看下c# 的首字母大寫(xiě):Strings.StrConv("str.str.str str_str", VbStrConv.ProperCase, System.Globalization.CultureInfo.CurrentCulture.LCID);
是的,python就是這么方便,操作數(shù)據(jù)的方便,后面你能更加感受到。
name="jack rose"; str1=name+1+"2"; print(name.title())
但是依然有值得注意的地方,在其他高級(jí)語(yǔ)言如python和java中是沒(méi)得問(wèn)題的,但是在py中是存在問(wèn)題的。
Traceback (most recent call last): File "index.py", line 2, in <module> str1=name+1+"2"; TypeError: cannot concatenate 'str' and 'int' objects
為什么不會(huì)自動(dòng)轉(zhuǎn)換呢?他們兩個(gè)對(duì)象不一樣,那么就會(huì)失敗,為啥會(huì)這樣呢?這個(gè)是涉及問(wèn)題,來(lái)看下int 如果轉(zhuǎn)換為str的
a=str(1) print(a)
和其他語(yǔ)言不一樣,其他語(yǔ)言有tostring,那么轉(zhuǎn)換的時(shí)候就會(huì)調(diào)用tostring,而py中,是一個(gè)str函數(shù),設(shè)計(jì)的不同意味著他們的寫(xiě)法不同。
看下其他幾個(gè)簡(jiǎn)單的。
name=" jack rose "; print(name.lstrip())
lstrip 是去除左邊的空格,然后rstrip 去除右邊的空格。在此說(shuō)明的不是說(shuō)lstrip這個(gè)函數(shù),而是想說(shuō)明,py有很多函數(shù)分為左右,如果你發(fā)現(xiàn)一個(gè)函數(shù)有從左查詢,那么一定有一個(gè)從右查詢,這就是為啥py這么方便,因?yàn)樘峁┝颂嗪瘮?shù)。
是的,它的語(yǔ)義化,讓你不需要去尋找哪個(gè)函數(shù)干什么的,從英文中就能推斷出。string 到此就結(jié)束了,那么看到下本章的主要,列表。
首先python沒(méi)有數(shù)組,一門(mén)動(dòng)態(tài)語(yǔ)言要啥數(shù)組呢?來(lái)看看其操作方便的列表。
name=" jack rose "; list=['a','b','c'] print(list);
輸出:['a','b','c'],好吧這里可能有人疑問(wèn)這為啥不是數(shù)組呢?你可以理解為這是一種語(yǔ)法。
為了證明其不是一個(gè)string數(shù)組:
list=['a','b','c'] list.append(1); print(list);
輸出:['a', 'b', 'c', 1]
好的上述你看到了添加,那么看下插入吧。
list=['a','b','c'] list.append(1); list.insert(0,1); print(list);
輸出:[1, 'a', 'b', 'c', 1]
它的規(guī)則也很簡(jiǎn)單,就是在當(dāng)前位置寫(xiě)入,其他的位置往后移動(dòng)。
在此說(shuō)明一點(diǎn),我們可以像索引一樣去訪問(wèn)列表。
list=['a','b','c'] print(list[0]);
輸出a。除了這樣,我們還可以list[-1],將會(huì)返回'c',而不是異常,這讓我們的計(jì)算方便很多,我們不需要去計(jì)算最后一個(gè)位置的位置。
看下刪除:
list=['a','b','c'] del list[0] print(list); 輸出:['b', 'c']
在這里說(shuō)明一下,不僅是列表這樣刪除,其他的類型也是這樣刪除的。
a='a'; del a; print(a);
是的,這樣就沒(méi)有a了。
Traceback (most recent call last): File "index.py", line 5, in <module> print(a); NameError: name 'a' is not defined
這樣說(shuō)吧,a并沒(méi)有刪除,只是刪除了a和'a'的聯(lián)系,就想指針指向一樣。
指定位置彈出:
list=['a','b','c'] list.pop(); print(list);
返回:[a,b]
那么默認(rèn)是彈出最后一個(gè)位置,如果指定位置的話,比如說(shuō)第一個(gè),那么pop(0)即可。
那么如何根據(jù)值來(lái)刪除呢?
list=['a','b','c','a'] list.remove('a'); print(list);
輸出值:['b', 'c', 'a']
可以看到值刪除了一個(gè),那么如果全部刪除呢?這個(gè)后面系列將會(huì)介紹到,也許你現(xiàn)在可以想象遍歷一下。對(duì)了有一個(gè)函數(shù)count,list.count('a')會(huì)計(jì)算a出現(xiàn)的次數(shù),而正在的計(jì)算list大小,是通過(guò)len,這個(gè)函數(shù),如len(list)
在我們編程中排序時(shí)少不了的,有臨時(shí)排序還有永久排序。臨時(shí)排序就是返回一個(gè)新的list,永久就是直接修改list,他們分別對(duì)應(yīng)的函數(shù)是:
list=['b','c','d','a'] print(sorted(list)); print(list); list.sort(); print(list);
輸出:
['a', 'b', 'c', 'd'] ['b', 'c', 'd', 'a'] ['a', 'b', 'c', 'd']
在此你可以知道sorted 是臨時(shí)排序,sort 是永久排序,值得總結(jié)的是:一般來(lái)說(shuō)自身函數(shù)的調(diào)用是永久操作自己,而外部會(huì)創(chuàng)造另一個(gè)對(duì)象。
再舉另外一個(gè)例子:reverse,list.reverse是操作自己,而不是返回一個(gè)新對(duì)象,reversed(list);返回一個(gè)新對(duì)象。
list=['b','c','d','a'] for item in list: print(item)
循環(huán)非常的簡(jiǎn)單,但是值得注意的是list后面需要又要給:,這是需要注意的語(yǔ)法。
同樣需要介紹另外一個(gè)東西,pass.
假如我們for語(yǔ)句什么都不做,好的,不要糾結(jié)為啥什么都不做。
那么可以這樣:
list=['b','c','d','a'] for item in list: pass
如果沒(méi)有pass,那么將會(huì)報(bào)錯(cuò),pass 是占位語(yǔ)句。
前面介紹到,py操作數(shù)據(jù)是真的方便,那么如果要生成一些數(shù)據(jù)是否同樣方便?
for item in range(0,10): print(item);
輸出:
0 1 2 3 4 5 6 7 8 9
這樣就生成了0-9。前開(kāi)后閉類型的。
同樣你可以跳過(guò)一些:
for item in range(0,10,2): print(item); 0 2 4 6 8
同樣可以進(jìn)行一些統(tǒng)計(jì):
list=range(0,10,2); print(min(list)); print(max(list)); print(sum(list));
得到0,8,20。
給各位介紹一個(gè)神器的語(yǔ)法,比如你想要上面的list增加1,然后賦值給一個(gè)新的list,那么怎么寫(xiě)呢?
list=range(0,10,2); list2=[item++1 for item in list] print(list2);
這樣就是:[1, 3, 5, 7, 9]
這里我寫(xiě)的是item++1,這和我們c# item++一樣,語(yǔ)法不通而已。
那么如果我要復(fù)制一個(gè)list怎么辦呢?
list=range(0,10,2); list2=list[:] print(list2);
這樣就行。[:]是否只能用來(lái)copy呢?當(dāng)然不是,它是片切的一種語(yǔ)法。
list=range(0,10,2); print(list); list2=list[1:2] print(list2);
輸出:
[0, 2, 4, 6, 8] [2]
獲取從1開(kāi)始,到2介紹,且不包含2。
還是前開(kāi)后閉原則。
除了可以填寫(xiě)正數(shù),你還可以填寫(xiě)負(fù)數(shù):
list=range(0,10,2); print(list); list2=list[-1:] print(list2);
相信也猜到了,沒(méi)錯(cuò)就是獲取最后一個(gè)。
如果你希望你定下的一些數(shù)據(jù)被修改,那么你可以使用元組。
tuple=(100,200)
這樣就創(chuàng)建了一個(gè)元組,是的,把一些數(shù)據(jù)放在括號(hào)中。
元組一般用于查詢,他的函數(shù)也非常少。
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“python基礎(chǔ)入門(mén)之列表的示例分析”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。