python學習手冊2

2021-08-14 12:51:49 字數 4546 閱讀 3399

python中map函式的使用方法:map() 會根據提供的函式對指定序列做對映。

第乙個引數 function 以引數序列中的每乙個元素呼叫 function 函式,返回包含每次 function 函式返回值的新列表。

>>>def square(x) :            # 計算平方數

... return x ** 2

...

>>> map(square, [1,2,3,4,5]) # 計算列表和:1+2+3+4+5

[1, 4, 9, 16, 25]

>>> map(lambda x: x ** 2, [1, 2, 3, 4, 5]) # 使用 lambda 匿名函式

[1, 4, 9, 16, 25]

# 提供了兩個列表,對相同位置的列表資料進行相加

>>> map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])

[3, 7, 11, 15, 19]

#第乙個引數為函式,其後的引數個數要符合函式的引數

#生成乙個列表

建立字典的四種不同方式適用不同:

這四種形式都會建立相同的兩鍵字典,但它們在不同的條件下有用:

1·如果你可以事先拼出整個字典,那麼第一種是很方便的。

2·如果你需要一次動態地建立字典的乙個字段,第二種比較合適。

3·第三種關鍵字形式所需的**比常量少,但是鍵必須都是字串才行。

4·如果你需要在程式執行時把鍵和值逐步建成序列,那麼最後一種形式比較有用。1.

2.d = {}

d['a'] = 1

d['b'] = 3

3.dict(a = 1 , b = 3)

4.dict([('a' = 1),('b' = 3)])

對於python2和python3中的字典差異:1.對於d.key、d.values和d.items方法,返回可迭代的檢視,而不是列表。因此不支援類似索引和列表的各種方法,需要使用需要list轉化。 2.由於前面一點,需要新的編碼方式通過排序鍵來遍歷。3.不再直接支援相對大小比較——取而代之的是手動比較。4.不再有d.has_key方法——相反,使用in成員關係測試。5.python3支援字典解析(類似列表解析)

zip函式可以將兩個列表中的位置相同的元素對映為一對,於是構建字典很容易使用zip函式加上鍵列表和值列表套上dict生成

python3中字典返回的key和items檢視可以進行集合運算,而values不行,因為其不唯一

值得注意的區別在於「+」、「*」以及分片操作應用於元組時將返回新元組,並且元組不提供字串、列表和字典中的方法。例如,如果你想對元組進行排序,通常先得將它轉換為列表並使其成為乙個可變物件,才能獲得使用排序方法呼叫的許可權,或者使用新的sorted內建方法,它接受任何序列物件(以及更多)

>>> t = ('aa','cc','vv','bb')

>>> sorted(t)

['aa', 'bb', 'cc', 'vv']

寫入文字:將開啟的檔案狀態設定為』w』,之後採用write方法寫入檔案中。

注意:當你所要編輯的原檔案已經存在,再以』w』格式開啟,則會覆蓋原來的檔案!!所以採用先判斷檔案是否存在,然後再open但當需要將字串加入文字檔案時,一種常見方式是 『a』 ,將字串加入檔案末尾,這種方式不會刪除原檔案。

檔案中的寫操作一般先寫入緩衝區中,當檔案操作關閉或者緩衝區滿時,才寫入檔案中,也可以以使用flush()將目前緩衝區中的內容寫入檔案中,不要求關閉檔案或者緩衝區滿。

python3中提供了新的檔案開啟方式,

#例如

fo.open('1.txt',encoding = 'latin-1')#以unicode檔案格式開啟

fo.open('1.txt','rb')#以二進位制檔案格式開啟

要開啟的兩個引數必須都是python的字串,第三個是可選引數,它能夠用來控制輸出快取:傳入「0」意味著輸出無快取(寫入方法呼叫時立即傳給外部檔案)。

python 2.6文字檔案處理8位文字和二進位制資料,並且有一種特殊的字串型別和檔案介面(unicode字串和odecs.open)來處理unicode文字。python 3.0中的區別源自於簡單文字和unicode文字都合併為一種常規字串型別這一事實——這是有意義的,因為所有的文字都是unicode,包括ascii和其他的8位編碼。

有些高階應用程式也需要處理打包的二進位制資料,這些資料可能是c語言程式生成的。python的標準庫中包含乙個能夠在這一範圍起作用的工具:struct模組能夠構造並解析打包的二進位制資料。

如果你的確需要拷貝,那麼可以明確要求。1.沒有限制條件的分片表示式(l[:])能夠複製序列。2.字典copy方法(x.copy())能夠複製字典。3.有些內建函式(例如,list)能夠生成拷貝(list(l))。4.copy標準庫模組能夠生成完整拷貝。

>>> l = [1,2,3,4]

>>> d =

>>> s = l[:]

>>> t = d.copy()

>>> s[1] = 'spam'

>>> t['a'] = 'test'

>>> l,d

([1, 2, 3, 4], )

>>> s,t

([1, 'spam', 3, 4], )

==與is的區別:==是判斷值相等,is判斷所引用的物件是否為同乙個

>>> s1 = 'spam'

>>> s2 = 'spam'

>>> s1 is s2

true

>>> s1 = 'a long string'

>>> s2 = 'a long string'

>>> s1 is s2

false

#出現這樣的原因是:因為在python內部暫時儲存並重複使用短字串作為最佳化,

#事實上記憶體裡只有乙個字串'spam'供s1和s2分享。因此,"is"一致性測試結果為真。

#為了得到更一般的結果,我們需要使用更長的字串

#同樣在python虛擬機器啟動時會建立乙個數池,在-5~256的整數物件一致

使用none來為列表配置初始空間,同樣也可以用0等

在賦值中,有python2和python3的區別

#當表示序列賦值時,引用個數要與物件個數一致,否則會報錯

>>> a,b,c = 'spam'

traceback (most recent call last):

file "", line 1, in a,b,c = 'spam'

valueerror: too many values to unpack

#在python2中,是不能實現切片賦值

>>> a,*b = 'spam'

syntaxerror: invalid syntax

#在python3中可以實現,將字元左邊乙個賦值給乙個引用,剩下的所有賦值給另乙個引用

>>> a,*b = 'spam'

>>> a,b

('s', ['p', 'a', 'm'])

#星號所指向的引用一定為列表,沒有元素則是空列表

python2和python3中print的區別

1. python2中不加小括號,python3中加小括號

2. python2中對於行尾的連續顯示輸出使用逗號 print x,y,

python3中對於行尾的連續顯示輸出使用end='' print(x,y,end = '')

3. python2中使用》進行輸出重定向 print >> afile,x,y

python3中使用file=afile進行重定向輸出 print(x,y,file = afile)

例如:log = open('test.txt','a')

#python3

print(x,y,z,file=log) #將(x,y,z)輸出到檔案中去

#python2

print >> log,a,b,c #將(a,b,c)輸出到檔案中去

enumerate函式返回乙個生成器物件:這種物件支援下一章將要學習的迭代協議,本書下一部分會再深入討論迭代協議。簡而言之,這個物件有乙個__next__方法,由下乙個內建函式呼叫它,並且迴圈中每次迭代的時候它會返回乙個(index,value)的元組。我們可以在for迴圈中通過元組賦值運算將元組解包(很像是使用zip)

>>> s='spam'

>>> e = enumerate(s)

>>> e

>>> next(e)

(0, 's')

>>> next(e)

(1, 'p')

yield函式認識

def square(x):

for i in range(x):

yield i ** 2

#本身不會輸出,產生乙個生成器物件,用於迭代

for i in square(5):

print(i)

python學習手冊(2)

python裡面摒棄了陣列啊之類的概念,用列表來代替,其實效果和使用方法做了乙個擴充套件,變得更6了 直接上 list int 1,2,5,3 list2 string bella laura kinsey lydia list3 mix 1,4,5.0,bella 1,3,5 也就是說,列表是乙個...

Python學習手冊 02

物件無非是記憶體中的一部分,包含數值和相關操作的集合。python程式可以分解成模組,語句,表示式,物件。1,程式由模組構成 2,模組包含語句 3,語句包含表示式 4,表示式建立並處理物件 python提高程式設計效率的方法之一 內建型別 像函式,模組,類這樣的程式設計單元也是物件,由def,cla...

python學習手冊 簡記

匹配hello開頭 world結尾字串 中間的任意字元儲存在group中.import re match re.match hello t world hello python world match group 1 python match re.match usr home lumberjack...