1、明確學(xué)習(xí)目標(biāo),不急于求成,不好高騖遠(yuǎn)
當(dāng)下是一個(gè)喧囂、浮躁的時(shí)代。我們總是被生活中大量涌現(xiàn)的熱點(diǎn)所吸引,幾乎沒有深度閱讀和思考的時(shí)間和機(jī)會(huì)。要知道學(xué)習(xí)是需要沉下心來慢慢鉆研的,是長期的;同時(shí),學(xué)習(xí)不應(yīng)該被賦予太多的功利色彩。一個(gè) Python 程序員的成長路線圖應(yīng)該是這樣子的:基礎(chǔ)語法–>;語感訓(xùn)練–>;課題練習(xí)–>;分方向繼續(xù)學(xué)習(xí)–>;中級(jí)程序員–>;拓展深度和廣度–>;高級(jí)程序員。
然而,很多新手的學(xué)習(xí)路線圖卻是這樣子的:學(xué)完基礎(chǔ)語法之后,不了解 HTML 協(xié)議和 Ajax 異步請(qǐng)求,就興沖沖研究爬蟲去了;或者,學(xué)完基礎(chǔ)語法,就去搞視覺識(shí)別,連 OpenCV 的數(shù)據(jù)結(jié)構(gòu)都看不懂;甚至,學(xué)完基礎(chǔ)語法就直接研究神經(jīng)網(wǎng)絡(luò),結(jié)果是重演了一遍從入門到放棄。
對(duì)于剛?cè)腴T學(xué)習(xí)Python的同學(xué)來說,要記住不急于求成,不好高騖遠(yuǎn),一步一步,穩(wěn)扎穩(wěn)打,功到自然成。不急于求成,可以避免走彎路,非但不會(huì)延緩你成長的速度,反倒會(huì)節(jié)省你的時(shí)間。不好高騖遠(yuǎn),達(dá)成一個(gè)目標(biāo),再制定下一個(gè)目標(biāo),在連續(xù)的成功和進(jìn)步中,建立起自信心,激發(fā)出更強(qiáng)的學(xué)習(xí)興趣。
2、習(xí)慣使用IDLE,這是學(xué)習(xí)Python好的方式
解釋型語言的優(yōu)勢(shì),就是可以寫一句執(zhí)行一句,想到哪兒寫到哪兒,不必像編譯型語言那樣得把程序全部寫完,編譯成功后才能運(yùn)行。推薦使用Python的IDLE,甚至可以拿它當(dāng)計(jì)算器用。很多時(shí)候,可以用IDLE驗(yàn)證代碼的寫法是否正確,查看模塊是否安裝成功以及版本號(hào)。IDLE支持tab鍵自動(dòng)補(bǔ)齊,可用這個(gè)功能查看某個(gè)對(duì)象的方法和屬性。
零基礎(chǔ)入門學(xué)習(xí)能學(xué)到的有限,還是系統(tǒng)學(xué)習(xí)全面。
Python列表定義:按特定順序排列的元素組成。在Python中,用方括號(hào)[]來表示列表,并用逗號(hào)來分隔其中的元素。Python列表是編程中很常見的數(shù)據(jù)類型 。
列表是一種可修改的集合類型,其元素可以是數(shù)字、string等基本類型,也可以是列表、元組、字典等集合對(duì)象,甚至可以是自定義的類型。其定義方式如下:>>> nums = [1,2,3,4]>>> type(nums)>>> print nums[1, 2, 3, 4]>>> strs = ["hello","world"]>>> print strs['hello', 'world']>>> lst = [1,"hello",False,nums,strs]>>> type(lst)>>> print lst[1, 'hello', False, [1, 2, 3, 4], ['hello', 'world']]
下面我們來看一下列表中有哪些常見的方法:count():統(tǒng)計(jì)某個(gè)元素在列表中出現(xiàn)的次數(shù)。index():從列表中找出某個(gè)值第一個(gè)匹配項(xiàng)的索引位置。append():在列表末尾添加新對(duì)象。extend():在列表末尾一次性追加另一個(gè)序列的多個(gè)值。insert():在列表的指定位置插入對(duì)象。pop():移除列表中的一個(gè)元素(默認(rèn)最后一個(gè)元素),并且返回該元素的值。remove():移除列表中某個(gè)值的第一個(gè)匹配項(xiàng)。reverse():將列表中的元素反向,不重新拷貝一個(gè)列表。reversed():將列表中的元素反向,重新拷貝一個(gè)列表。sort():將列表中的元素排序,不重新拷貝一個(gè)列表。sortd():將列表中的元素排序,重新拷貝一個(gè)列表。copy():淺拷貝,只是給原來的列表貼上了一個(gè)新標(biāo)簽,對(duì)于一個(gè)復(fù)雜對(duì)象的子對(duì)象并不會(huì)完全復(fù)制,如果有子列表,改變?cè)瓉淼闹?,新的拷貝?duì)象也會(huì)改變。deepcopy():深拷貝,將復(fù)雜對(duì)象的每一層復(fù)制一個(gè)單獨(dú)的個(gè)體出來。就是完全拷貝。常見內(nèi)置函數(shù):max()、min()、sum()、len()、all()、any()、zip()、enumerate()
一些常用的方法1. 逆轉(zhuǎn)字符串的三種方法1.1. 模擬C++中方法, 定義一個(gè)空字符串來實(shí)現(xiàn) 通過設(shè)置一個(gè)空字符串, 然后講參數(shù)中的字符串從后往前遍歷, 使用字符串的加法合并為新的字符串 復(fù)制代碼 代碼如下:def reverse(text) : str = '' index = len(text) - 1 while index >= 0 : str += text[index] index -= 1 return str1.2. 使用切片法 這個(gè)是Python中的一個(gè)特性, 切片可以取負(fù)值,這是采用切片的方法,設(shè)置步長為-1,這樣就實(shí)現(xiàn)了反過來排序。
復(fù)制代碼 代碼如下:def reverse_1(text) : return text[::-1]1.3. 使用列表 采用列表的reverse方法,先將text轉(zhuǎn)換為列表,然后通過reverse方法反轉(zhuǎn),然后在通過join連接為字符串。復(fù)制代碼 代碼如下:def reverse_2(text) : temp = list(text) temp.reverse() return ''.join(temp)2. 使用reduce 使用匿名函數(shù)和reduce() 復(fù)制代碼 代碼如下:def reverse_3(text) : return reduce(lambda x, y : y + x, text) print reverse_3("Hello")3. 遍歷字典的四種方法 復(fù)制代碼 代碼如下:dict={"a":"apple","b":"banana","o":"orange"} print "##########dict######################" for i in dict: print "dict[%s]=" % i,dict[i] print "###########items#####################" for (k,v) in dict.items(): print "dict[%s]=" % k,v print "###########iteritems#################" for k,v in dict.iteritems(): print "dict[%s]=" % k,v print "###########iterkeys,itervalues#######" for k,v in zip(dict.iterkeys(),dict.itervalues()): print "dict[%s]=" % k,v4. 遍歷list的三種方法 復(fù)制代碼 代碼如下:for key in lst : print key for i in range(len(lst)) : print lst[i] for index, key in enumerate(lst) : print key //index是list的索引5. 字典排序的方法 字典按照value的值從大到小的順序來排序(默認(rèn)從小到排序)。
復(fù)制代碼 代碼如下:dic = {'a':31, 'bc':5, 'c':3, 'asd':4, 'aa':74, 'd':0} dict= sorted(dic.iteritems(), key=lambda d:d[1], reverse = True) print dict//輸出的結(jié)果:[('aa', 74), ('a', 31), ('bc', 5), ('asd', 4), ('c', 3), ('d', 0)] 下面我們分解下代碼 print dic.iteritems() 得到[(鍵,值)]的列表。然后用sorted方法,通過key這個(gè)參數(shù),指定排序是按照value,也就是第一個(gè)元素d[1的值來排序。
reverse = True表示是需要翻轉(zhuǎn)的,默認(rèn)是從小到大,翻轉(zhuǎn)的話,那就是從大到小。對(duì)字典按鍵(key)排序:復(fù)制代碼 代碼如下:dic = {'a':31, 'bc':5, 'c':3, 'asd':4, 'aa':74, 'd':0} dict= sorted(dic.iteritems(), key=lambda d:d[0]) # d[0]表示字典的鍵 print dict#sorted中第三個(gè)可選參數(shù)為reverse, True表示從大到小排序#默認(rèn)reverse = False6. 子類和父類 子類構(gòu)造函數(shù)調(diào)用父類的初始化構(gòu)造函數(shù) 復(fù)制代碼 代碼如下:class A(object) : def __init__(self) : print "testA class B(A) : def __init__(self) : A.__init__(self) 子類調(diào)用父類的同名函數(shù) 復(fù)制代碼 代碼如下:super().fuleifunction()7. 更靈活的參數(shù)傳遞方式 復(fù)制代碼 代碼如下:func2(a=1, b=2, c=3) #默認(rèn)參數(shù) func3(*args) #接受任意數(shù)量的參數(shù), 以tuple的方式傳入 func4(**kargs) #把參數(shù)以鍵值對(duì)字典的形式傳入 在變量前加上星號(hào)前綴(*),調(diào)用時(shí)的參數(shù)會(huì)存儲(chǔ)在一個(gè) tuple()對(duì)象中,賦值給形參。
在函數(shù)內(nèi)部,需要對(duì)參數(shù)進(jìn)行處理時(shí),只要對(duì)這個(gè) tuple 類型的形參(這里是 args)進(jìn)行操作就可以了。因此,函數(shù)在定義時(shí)并不需要指明參數(shù)個(gè)數(shù),就可以處理任意參數(shù)個(gè)數(shù)的情況。
復(fù)制代碼 代碼如下:def calcSum(*args): sum = 0 for i in args: sum += i print sum#調(diào)用:calcSum(1,2,3) calcSum(123,456) calcSum()#輸出:65790################################# def printAll(**kargs): for k in kargs: print k, ':', kargs[k] printAll(a=1, b=2, c=3) printAll(x=4, y=5)#輸出:a : 1 c : 3 b : 2 y : 5 x : 4 python的中參數(shù)可以多種形式進(jìn)行組合, 在混合使用時(shí),首先要注意函數(shù)的寫法,必須遵守:1.帶有默認(rèn)值的形參(arg=)須在無默認(rèn)值的形參(arg)之后2.元組參數(shù)(*args)須在帶有默認(rèn)值的形參(arg=)之后3.字典參數(shù)(**kargs)須在元組參數(shù)(*args)之后 在函數(shù)被調(diào)用時(shí),參數(shù)的傳遞過程為:1.按順序把無指定參數(shù)的實(shí)參賦值給形參2.把指定參數(shù)名稱(arg=v)的實(shí)參賦值給對(duì)應(yīng)的形參3.將多余的無指定參數(shù)的實(shí)參打包成一個(gè) tuple 傳遞給元組參數(shù)(*args)4.將多余的指定參數(shù)名的實(shí)參打包成一個(gè) dict 傳遞給字典參數(shù)(**kargs)8. lambda 表達(dá)式 lambda 表達(dá)式可以看做一種匿名函數(shù) lambda 表達(dá)式的語法格式: lambda 參數(shù)列表: 表達(dá)式 #參數(shù)列表周圍沒有括號(hào),返回值前沒有 return 關(guān)鍵字,也沒有函數(shù)名稱 復(fù)制代碼 代碼如下:def fn(x): return lambda y: x + y#調(diào)用 a = fn(2) print a(3)#輸出5 分析: fn(2)調(diào)用后, 相當(dāng)于a = lambda y: 2 + y, 然后a(3)被調(diào)用時(shí).相當(dāng)于 print lambda y: 2 + 3。
1、添加元素
添加元素使用列表的內(nèi)置方法append
number = [1, 2, 3, 4]
number.append(5) # number = [1, 2, 3, 4, 5]
number.append([6,7]) # number = [1, 2, 3, 4, 5, [6, 7]]
number.append({'a':'b'}) # number = [1, 2, 3, 4, [6, 7], {'a', :'b'}
可以看到強(qiáng)大的python列表可以嵌套任意類型
2、列表相加
要想連接兩個(gè)列表,可以使用+號(hào)連接
a = [1, 2, 3]
b = [4, 5, 6]
c = a + b # c = [1, 2, 3, 4, 5, 6]
也可以使用列表內(nèi)置方法extend連接兩個(gè)列表
a = [1, 2, 3]
b = [4, 5, 6]
a.extend(b) # a = [1, 2, 3, 4, 5, 6]
用+號(hào)會(huì)創(chuàng)建一個(gè)新通對(duì)象,使用extend則在原來的對(duì)象上面修改
3、列表去重復(fù)
列表本身沒有去除重復(fù)的功能,但是可以借助python的另外一個(gè)類型set(help(set)查看)
a = [1, 2, 3, 3,2, 1]
b = list(set(a)) # b = [1, 2, 3]
也可以借助字典類型的內(nèi)置方法
a = [1, 2, 2, 3, 1, 3]
b = {}.fromkeys(a).keys() # b = [1, 2, 3]
可以學(xué)會(huì)的零基礎(chǔ)
學(xué)習(xí)Python必須明確的幾點(diǎn):
1. 明確你將來是做什么工作的,需要掌握哪些技能,很多人連這個(gè)就不知道就盲目的學(xué),你首先清楚,現(xiàn)在公司需要什么人才,你應(yīng)該奔著什么目標(biāo)努力。Python的學(xué)習(xí)方向有很多,主要還是web。
2. 2.系統(tǒng)的學(xué)習(xí)規(guī)劃,規(guī)劃好你每天學(xué)習(xí)的新知識(shí)和每天做的作業(yè)和練習(xí),很多人想自學(xué)Python,兩個(gè)就看完了,這樣的能找到工作算是出奇了,現(xiàn)在學(xué)習(xí)Python想找到工作,沒有4-6個(gè)月的根本不行,所以規(guī)劃是一定要有的,我建議半年時(shí)間。
3. 3.注意學(xué)習(xí)方法,很多人在學(xué)習(xí)Python的時(shí)候,開始學(xué)那一刻起就選擇了錯(cuò)誤的學(xué)習(xí)方法,所以最后注定會(huì)放棄,回到原來的崗位繼續(xù)做著自己不喜歡的事情,學(xué)習(xí)Python需要一定的技巧,在開始學(xué)之前多跟別人問問,不要自己盲目的自學(xué),浪費(fèi)時(shí)間。
如果只看這個(gè)圖,很多人可能會(huì)看的一頭霧水,特別是學(xué)過完全面向?qū)ο笳Z言的同學(xué), Python 是雙面向的,既可以面向函數(shù)編程,也可以面向?qū)ο缶幊?,所謂面向函數(shù)就是單獨(dú)一個(gè). py 文件,里面沒有類,全是一些函數(shù),調(diào)用的時(shí)候?qū)肽K,通過模塊名.函數(shù)名()即可調(diào)用,完全不需要類,那么你可能會(huì)問,那要類還有什么毛用? 類就是用來面向?qū)ο缶幊汤?,類可以有自己的屬性,類可以?chuàng)建很多實(shí)例,每個(gè)實(shí)例可以有不同的屬性,這也就保存了很多私有的數(shù)據(jù),總之都有存在的必要.
再來看上面這張圖,在類里面定義的函數(shù)就是方法,類方法需要@ classmethod 修飾并且有個(gè)隱藏參數(shù) cls,實(shí)例方法必須有個(gè)參數(shù) self, 靜態(tài)方法必須有 @staticmethod修飾,類和實(shí)例都可以訪問靜態(tài)方法,實(shí)例可以訪問實(shí)例方法也可以訪問類方法,類可以訪問類方法也可以訪問實(shí)例方法,訪問實(shí)例方法必須要帶參數(shù) self, 可以理解為類其實(shí)也是一個(gè)實(shí)例,類訪問實(shí)例方法不帶參數(shù)會(huì)報(bào)錯(cuò)的.類本身可以訪問函數(shù),實(shí)例卻不行.
聲明:本網(wǎng)站尊重并保護(hù)知識(shí)產(chǎn)權(quán),根據(jù)《信息網(wǎng)絡(luò)傳播權(quán)保護(hù)條例》,如果我們轉(zhuǎn)載的作品侵犯了您的權(quán)利,請(qǐng)?jiān)谝粋€(gè)月內(nèi)通知我們,我們會(huì)及時(shí)刪除。
蜀ICP備2020033479號(hào)-4 Copyright ? 2016 學(xué)習(xí)鳥. 頁面生成時(shí)間:3.360秒