生信零基礎(chǔ)學(xué)習(xí)筆記(三)python基礎(chǔ)

python入門有很多教程,習(xí)慣上比較講究快速學(xué)習(xí)的同學(xué),可以選擇廖雪峰的網(wǎng)站和python簡明教程,小小白上半年偶爾看過一遍廖雪峰的教程,然而……沒有記住,因為當(dāng)時完全沒有實戰(zhàn),所以說學(xué)習(xí)編程還是要不斷的練習(xí)和分享,以及做筆記啊。因此本次我選擇python簡明教程并且結(jié)合廖雪峰的網(wǎng)站。


推薦安裝pycharm編輯器,用過都說好。

官網(wǎng)直接下載。解壓,打開bin文件夾,終端運行 sh pycharm.sh,出現(xiàn)安裝界面,選擇激活碼。

激活碼參考:blog.csdn.net/lhw413/article/details/72357062

裝在了window電腦的ubuntu虛擬機卡的喲,簡直人生無望,果斷重裝window版。

安裝配置有很多教程,不再贅述,參考:wenku.baidu.com/view/81038a877cd184254b35359b.html?


1.基本概念:

python中4種類型的數(shù),整數(shù),長整數(shù),浮點數(shù)(相當(dāng)于小數(shù)),復(fù)數(shù)(-5+4j)

字符串使用,單引號雙引號的一樣,三引號可以只是多行的字符串,并且可以在其中使用單雙引號。

想要在字符串中包含單引號除了三引號還有\(zhòng),\' 轉(zhuǎn)義符。但\在行尾表示字符串接下一行。

自然字符串:給字符串的前綴加R或者r,特殊字符串失去意義,例如正則表達式可以使用中這種形式,否則轉(zhuǎn)義符太多。

Unicode字符串:字符串前加上前綴u或者U,簡單說就是給字符一個唯一的存儲數(shù)字,跨平臺,跨語言通用。

字符串按照字面意義相鄰放著,自動被Python相連。

變量:y=x+1 中的x,y

標(biāo)識符:字母,下劃線,數(shù)字,注意大小寫。

對象:在python中任何東西都可以稱為對象。

縮進:同一層次的語句必須有相同的縮進。每一組稱之為塊。

list 有序的集合可以隨時添加刪除值【】:

classmates = ['Michael','Bob','Tracy'] ,len()獲得list元素的長度

.append 在末尾添加元素;.insert (1.值) 在1位插入值;.pop(i)刪除list值

tuple : 元組,一旦初始化不能修改。注:只有一個字符的元組,在后面加,以免歧義。(1,)

dict: 快速查找存儲,但是空間消耗大。{} 通過key直接拿到value. In可以判斷key知否存在,.pop刪除key

set:無序無意義的集合,提供一個list作為輸入集合 顯示不證明有序,.remove刪除key

不變對象:調(diào)用自身的任何對象方法,都不會改變對象自身 的內(nèi)容,相反這些對象會創(chuàng)建新的對象并返回,這也就保證了不可變對象是不可變。

2.控制流(語法)

共三種if,for,while

if

if - else

if (條件判斷):

? ? print1

elif (條件判斷):

? ? print2

else:

? ? print2

從上到下依次執(zhí)行。第一個判斷條件為true,余下忽略。

循環(huán)語句

for - in循環(huán)

for x in…… 就是把每個元素代入變量x,然后執(zhí)行縮進的塊的語句。

生出整數(shù)序列:range(5)從0開始小于5的整數(shù),提供第三個數(shù)為步長,比如(1,5,2)再用list()轉(zhuǎn)換為list,輸出為1,3

例如:

sum =0

for x in range(101):

????sum = sum + x

print (sum)

while

條件滿足,不斷循環(huán),條件不滿足,退出循環(huán)。

sum =0

n =99

while n >0:

????sum = sum + n

????n = n-2

print (sum)

break

用來終止循環(huán)語句。無論結(jié)果是否為true,或者序列有沒有完全被遞歸。也就是說從for過著while循環(huán)中終止,任何對應(yīng)的循環(huán)的else塊將不執(zhí)行。

while True:

????s = raw_input ('Enter something:') ### raw_input 將輸入的都表示為字符串。

????if s == 'quit':

????????break ? ? ### 程序終止 ,輸出done

????print 'length of the string is',len(s) ###否則輸出s的字符串長度。

print 'Done'

continue

跳過當(dāng)前的循環(huán)塊的剩余語句,繼續(xù)進行下一步循環(huán)。

while True:

????s = raw_input ('Enter something:')

????if s == 'quit':

????????break

????if len(s) < 3:

????????continue

????print 'Input is of sufficient length'

print 'Done'

盡量避免continue 和 break ,容易進入死循環(huán)。

3.函數(shù)

調(diào)用函數(shù)

定義函數(shù)

def 函數(shù)名(參數(shù)):

? ? 函數(shù)內(nèi)容

如:def hello ():

? ? ? ? ? ? ?? print 'hello world'????????

函數(shù)形參?

函數(shù)中的參數(shù)稱之為形參,提供的賦值稱之為實參。

函數(shù)返還值:從被調(diào)函數(shù)返還到主函數(shù),并且返回一個計算的值,也就是說主函數(shù)調(diào)用這個函數(shù)的時候得到這個返還值。

當(dāng)你在函數(shù)定義變量的是后,它與函數(shù)外具有相同名稱的變量沒有關(guān)系,函數(shù)的變量名對于函數(shù)來說是局部的,這就是變量的作用域、

global 語句

定義在函數(shù)外的變量賦值。使用該語句可以清楚的表明變量是在外面的塊定義。也就是他代表賦值是全局的。

默認(rèn)參數(shù)值

函數(shù)定義的形參后面跟上= 賦值,函數(shù)的形參就有了默認(rèn)的參數(shù)值,不可變。

只有形參表末尾的函數(shù)可以有默認(rèn)參數(shù)值,也就是說聲明函數(shù)的形參的時候,不能先聲明有默認(rèn)值的形參再聲明沒有默認(rèn)值的形參、也就是必選參數(shù)在前,默認(rèn)參數(shù)在后,當(dāng)函數(shù)有多個參數(shù)的時候,變化大的在前,變化小的在后,降低難度。

有多個默認(rèn)參數(shù)的時候,可以按照順序提供默認(rèn)參數(shù),也可以不按照順序直接寫參數(shù)值,表示這個參數(shù)用傳進去的值。

可變參數(shù):參數(shù)加*,表示參數(shù)作為可變參數(shù),允許添加0到多個參數(shù),函數(shù)調(diào)用時自動組成tuple.

也可以在list前加,表示list中的元素作為可變元素添加。

def calc(*numbers):

關(guān)鍵參數(shù)

允許傳入0到多個含有參數(shù)名的參數(shù),自動組成dict。通過命名給參數(shù)賦值,稱之為關(guān)鍵函數(shù)。不在乎位置。

**kw kw作為關(guān)鍵參數(shù)

>>> extra = {'city': 'Beijing', 'job': 'Engineer'} ###先組建一個dict

>>> person('Jack', 24, **extra)###作為關(guān)鍵參數(shù)填進去

name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}

命名關(guān)鍵參數(shù):

如果要限制關(guān)鍵字參數(shù)的名字,就可以用命名關(guān)鍵字參數(shù),例如,只接收city和job作為關(guān)鍵字參數(shù)。這種方式定義的函數(shù)如下:

def person(name, age, *, city, job):

print(name, age, city, job)

命名關(guān)鍵字參數(shù)需要一個特殊分隔符*,*后面的參數(shù)被視為命名關(guān)鍵字參數(shù)。

調(diào)用方式如下:

>>> person('Jack', 24, city='Beijing', job='Engineer')

Jack 24 Beijing Engineer

如果函數(shù)定義中已經(jīng)有了一個可變參數(shù),后面跟著的命名關(guān)鍵字參數(shù)就不再需要一個特殊分隔符*了:

def person(name, age, *args, city, job):

print(name, age, args, city, job)

參數(shù)組合

參數(shù)定義的順序必須是:必選參數(shù)、默認(rèn)參數(shù)、可變參數(shù)、命名關(guān)鍵字參數(shù)和關(guān)鍵字參數(shù)。

遞歸函數(shù)

如果一個函數(shù)在內(nèi)部調(diào)用自身本身,這個函數(shù)就是遞歸函數(shù)。

函數(shù)調(diào)用是通過棧(stack)這種數(shù)據(jù)結(jié)構(gòu)實現(xiàn)的,每當(dāng)進入一個函數(shù)調(diào)用,棧就會加一層棧幀,每當(dāng)函數(shù)返回,棧就會減一層棧幀。由于棧的大小不是無限的,所以,遞歸調(diào)用的次數(shù)過多,會導(dǎo)致棧溢出。解決方法尾遞歸。

4.高級特性

切片

L[0:3]表示,從索引0開始取,直到索引3為止,但不包括索引3。即索引0,1,2,正好是3個元素,也可以倒數(shù)切片,倒數(shù)第一個元素的索引是-1。可以用于字符串。

前10個數(shù),每兩個取一個,

>>> L[:10:2]

[0, 2, 4, 6, 8]

所有數(shù),每5個取一個:

>>> L[::5]

[0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95]

迭代

在Python中,迭代是通過for ... in來完成,不僅可以用在list或tuple上,還可以作用在其他可迭代對象上。

默認(rèn)情況下,dict迭代的是key。如果要迭代value,for value in d.values(),如果要同時迭代key和value,可以用for k, v in d.items()。也可以迭代字符串。

如何判斷一個對象是可迭代對象呢?方法是通過collections模塊的Iterable類型判斷:

>>> from collections import Iterable

>>> isinstance('abc', Iterable) # str是否可迭代

True

>>> isinstance([1,2,3], Iterable) # list是否可迭代

True

>>> isinstance(123, Iterable) # 整數(shù)是否可迭代

False

在for循環(huán)中同時迭代索引和元素本身:

for i, value in enumerate(['A', 'B', 'C']):

...? ? print(i, value)

列表生成式

創(chuàng)建list

[1x1, 2x2, 3x3, ..., 10x10]:

>>> [x * x for x in range(1, 11)];>>> [x * x for x in range(1, 11) if x % 2 == 0]###偶數(shù)平方

寫列表生成式時,把要生成的元素x * x放到前面,后面跟for循環(huán),就可以把list創(chuàng)建出來。

兩層循環(huán),可以生成全排列:

>>> [m + n for m in 'ABC' for n in 'XYZ']

['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']

列表生成式也可以使用兩個變量來生成list:

>>> d = {'x': 'A', 'y': 'B', 'z': 'C' }

>>> [k + '=' + v for k, v in d.items()]

['y=B', 'x=A', 'z=C']

一個list中所有的字符串變成小寫:

>>> L = ['Hello', 'World', 'IBM', 'Apple']

>>> [s.lower() for s in L]

['hello', 'world', 'ibm', 'apple']

生成器 generator

為了節(jié)省空間,一遍循環(huán)一邊計算。

只要把一個列表生成式的[]改成(),就創(chuàng)建了一個generator;如果一個函數(shù)定義中包含yield關(guān)鍵字,是一個generator

for循環(huán)可迭代。

變成generator的函數(shù),遇到y(tǒng)ield語句返回,再次執(zhí)行時從上次返回的yield語句處繼續(xù)執(zhí)行。

迭代器:

可以直接作用于for循環(huán)的對象統(tǒng)稱為可迭代對象:Iterable

可以被next()函數(shù)調(diào)用并不斷返回下一個值的對象稱為迭代器:Iterator。

>>> from collections import Iterator

>>> isinstance((x for x in range(10)), Iterator)

生成器都是Iterator對象,但list、dict、str雖然是Iterable,卻不是Iterator。

把list、dict、str等Iterable變成Iterator可以使用iter()函數(shù),

>>> isinstance(iter([ ]), Iterator):

True

5.函數(shù)式編程、

高階函數(shù)

函數(shù)本身可以賦值給變量,調(diào)用變量可以調(diào)用函數(shù)。所以一個函數(shù)可以接受另一個函數(shù)作為參數(shù),這就是高階函數(shù)。

map函數(shù)

接收兩個參數(shù),一個是函數(shù),一個是迭代對象。例如:

>>> list(map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9]))

['1', '2', '3', '4', '5', '6', '7', '8', '9']

reduce函數(shù)

與map函數(shù)的區(qū)別:

①從參數(shù)方面來講:

map()函數(shù):

map()包含兩個參數(shù),第一個是參數(shù)是一個函數(shù),第二個是序列(列表或元組)。其中,函數(shù)(即map的第一個參數(shù)位置的函數(shù))可以接收一個或多個參數(shù)。

reduce()函數(shù):

reduce() 第一個參數(shù)是函數(shù),第二個是 序列(列表或元組)。但是,其函數(shù)必須接收兩個參數(shù)。

②從對傳進去的數(shù)值作用來講:

map()是將傳入的函數(shù)依次作到序列的每個元素,每個元素都是獨自被函數(shù)“作用”一次;(請看下面的栗子)

reduce()是將傳人的函數(shù)作用在序列的第一個元素得到結(jié)果后,把這個結(jié)果繼續(xù)與下一個元素作用(累積計算),

最終結(jié)果是所有的元素相互作用的結(jié)果。

filter函數(shù)

用于過濾序列,和map()類似,filter()也接收一個函數(shù)和一個序列。和map()不同的是,filter()把傳入的函數(shù)依次作用于每個元素,然后根據(jù)返回值是True還是False決定保留還是丟棄該元素。

sorted函數(shù)

排序算法

可以進行數(shù)字與list排序,關(guān)鍵在于建立映射。

返還函數(shù)

把函數(shù)作為結(jié)果值返還。

6.模塊

模塊是包含了所有你定義的函數(shù)和變量的文件,為了在其他程序中重用模塊,py為擴展名。

7.面向?qū)ο蟮木幊?/h4>

而面向?qū)ο蟮某绦蛟O(shè)計把計算機程序視為一組對象的集合,而每個對象都可以接收其他對象發(fā)過來的消息,并處理這些消息。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • http://python.jobbole.com/85231/ 關(guān)于專業(yè)技能寫完項目接著寫寫一名3年工作經(jīng)驗的J...
    燕京博士閱讀 7,829評論 1 118
  • 教程總綱:http://www.runoob.com/python/python-tutorial.html 進階...
    健康哥哥閱讀 2,202評論 1 3
  • 最近在慕課網(wǎng)學(xué)習(xí)廖雪峰老師的Python進階課程,做筆記總結(jié)一下重點。 基本變量及其類型 變量 在Python中,...
    victorsungo閱讀 1,976評論 0 5
  • 內(nèi)置函數(shù)Python解釋器內(nèi)置了許多功能和類型,總是可用的。他們是按字母順序列在這里。 abs(x)返回一個數(shù)的絕...
    uangianlap閱讀 1,376評論 0 0
  • 前幾天走在校園的路上,無意間聽到前面兩個女生的閑聊。其中一個女生和另一個女生說:我在南方讀書的朋友她說寫“春雨貴如...
    簡孟龍閱讀 179評論 0 0

友情鏈接更多精彩內(nèi)容