Python學習筆記 基礎知識總結03

2022-07-15 10:09:14 字數 4363 閱讀 1097

1. 常見函式:

abs():求絕對值;

cmp(vala,valb):比較兩個值;

int(val):把其他資料型別轉換為整數;

str(val):把其他資料型別轉換為str;

sum([1,2,3]):接受乙個list並返回該list之和;

range(1, 101):建立乙個1到100的數列;

zip()函式可以把兩個 list 變成乙個 list:

isinstance(x, str) 可以判斷變數 x 是否是字串;

upper();

len(args)

2. 函式定義:

def 函式名稱(引數列表):

ps.如果函式中沒有return語句,函式執行完畢後也會返回結果,只是結果為 none。

3. 函式的返回值:

函式的返回值一般是乙個值,但可以通過返回turple的形式來返回多個值;

4. 遞迴函式:

乙個函式在內部呼叫自身本身,這個函式就是遞迴函式。

5. 預設引數:

如下所述的**中,name='world'為預設引數;

def greet(name='world'):

print 'hello,',name,'.'

greet()

greet('bart')

6.可變引數

如果想讓乙個函式能接受任意個引數,我們就可以定義乙個可變引數:

def fn(*args):

print args

可變引數的名字前面有個 * 號,我們可以傳入0個、1個或多個引數給可變引數:

7. 切片(擷取部分內容)

7.1 對list切片(擷取list的部分元素):slice()

>>> l[0:3]

['adam', 'lisa', 'bart']
a.l[0:3]表示,從索引0開始取,直到索引3為止(但不包括3)

b.如果第乙個索引是0,還可以省略為:l[:3]

c.也可以從索引1開始,取出2個元素出來:l[1:3]

d.只用乙個 : ,表示取出所有元素:l[:]

e.切片操作還可以指定第三個引數,表示每n個取乙個. l[::2]則表示從頭取到尾,每兩個取乙個;

7.2 對tuple切片

與對list切片一樣,在此不作說明!

7.3 倒序切片:l[-1:]

7.4 對字串切片:'abcdefg'[:3]  => 'abc'

python沒有針對字串的擷取函式,只需要切片乙個操作就可以完成。

8. 迭代

8.1 在python中,如果給定乙個list或tuple,我們可以通過for迴圈來遍歷這個list或tuple,這種遍歷我們成為迭代。    

有序集合:list,tuple,str和unicode;

無序集合:set 

無序集合並且具有 key-value 對:dict

8.2 索引迭代

python中,迭代永遠是取出元素本身,而非元素的索引。對於有序集合,元素確實是有索引的。有的時候,我們確實想在 for 迴圈中拿到索引,方法是使用 enumerate() 函式:          

for index, name in enumerate(l):

print index, '-', name

使用 enumerate() 函式,我們可以在for迴圈中同時繫結索引index和元素name。但是,這不是 enumerate() 的特殊語法。實際上,enumerate() 函式把:['adam', 'lisa', 'bart', 'paul'] 變成了類似:[(0, 'adam'), (1, 'lisa'), (2, 'bart'), (3, 'paul')] 因此,迭代的每乙個元素實際上是乙個tuple:

for t in enumerate(l):

index = t[0]

name = t[1]

print index, '-', name

如果我們知道每個tuple元素都包含兩個元素,for迴圈又可以進一步簡寫為:

for index, name in enumerate(l):

print index, '-', name

這樣不但**更簡單,而且還少了兩條賦值語句。可見,索引迭代也不是真的按索引訪問,而是由 enumerate() 函式自動把每個元素變成 (index, element) 這樣的tuple,再迭代,就同時獲得了索引和元素本身。

8.3 迭代dict的value

我們已經了解了dict物件本身就是可迭代物件,用 for 迴圈直接迭代 dict,可以每次拿到dict的乙個key。如果我們希望迭代 dict 物件的value,應該怎麼做?dict 物件有乙個 values() 方法,這個方法把dict轉換成乙個包含所有value的list,這樣,我們迭代的就是 dict的每乙個 value.

dict 物件有乙個 values() 方法,這個方法把dict轉換成乙個包含所有value的list.除了values()方法外,還有乙個 itervalues() 方法. itervalues() 方法不會轉換,它會在迭代過程中依次從 dict 中取出 value,所以 itervalues() 方法比 values() 方法節省了生成 list 所需的記憶體。

在python中,for 迴圈可作用的迭代物件遠不止 list,tuple,str,unicode,dict等,任何可迭代物件都可以作用於for迴圈,而內部如何迭代我們通常並不用關心。如果乙個物件說自己可迭代,那我們就直接用 for 迴圈去迭代它,可見,迭代是一種抽象的資料操作,它不對迭代物件內部的資料有任何要求。

8.4 迭代dict的key和value

首先,items() 方法把dict物件轉換成了包含tuple的list,我們對這個list進行迭代,可以同時獲得key和value。和 values() 有乙個 itervalues() 類似, items() 也有乙個對應的 iteritems(),iteritems() 不把dict轉換成list,而是在迭代過程中不斷給出 tuple,所以, iteritems() 不占用額外的記憶體。

9. 列表生成式

9.1. 要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],我們可以用range(1, 11)。但如果要生成[1x1, 2x2, 3x3, ..., 10x10]怎麼做?方法一是迴圈:

>>> l = 

>>> for x in range(1, 11):

>>> l

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

但是迴圈太繁瑣,而列表生成式則可以用一行語句代替迴圈生成上面的list,這種寫法就是python特有的列表生成式。

>>> [x * x for x in range(1, 11)]

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

9.2. 複雜表示式

使用for迴圈的迭代不僅可以迭代普通的list,還可以迭代dict。假設有如下的dict:

d =
完全可以通過乙個複雜的列表生成式把它變成乙個 html **:

tds = ['%s

%s' % (name, score) for name, score in d.iteritems()]

print ''

print 'name

score

'print '\n'.join(tds)

print ''

注:字串可以通過 % 進行格式化,用指定的引數替代 %s。字串的join()方法可以把乙個 list 拼接成乙個字串。把列印出來的結果儲存為乙個html檔案,就可以在瀏覽器中看到效果了。

9.3  條件過濾

列表生成式的 for 迴圈後面還可以加上 if 判斷。例如:>>> [x * x for x in range(1, 11)]

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
9.4  多層表示式

for迴圈可以巢狀,因此,在列表生成式中,也可以用多層 for迴圈來生成列表。對於字串 'abc' 和 '123',可以使用兩層迴圈,生成全排列: >>> [m + n for m in 'abc' for n in '123']

['a1', 'a2', 'a3', 'b1', 'b2', 'b3', 'c1', 'c2', 'c3']
翻譯成迴圈**就像下面這樣:

l =

for m in 'abc':

for n in '123':

Python學習筆記 基礎知識

coding cp936 此行是為了和linux的平台保持相容,是用來告訴shell執行時,去用 bin python來解釋執行 bin python 此行指明了編碼方式,預設是utf 8,如果我們要輸出中文或者採用中文的注釋,就會出現錯誤 coding gb2312 python特色一 三引號注釋...

Python基礎知識學習筆記

前置知識 一切皆物件,有自己的屬性和方法 變數 變數 variable 先賦值後使用 字串 轉義字元 i m lzh 格式化字串 print f my name is name 0 3 lzh 包括前面不包括後面 函式 def triangel width int input 請輸入長 height...

Python學習筆記 基礎知識

python中單行注釋以 開頭,多行注釋可以用多個 號,或者三個單引號或雙引號。我是注釋 我也是注釋 我也是注釋 我也是注釋 python使用縮排空格數來識別 塊而不是大括號,同乙個 塊的語句必須包含相同的縮排空格數。if true print hello world else print hell...