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...