Python 語言精要
一、前言
1. 數(shù)據(jù)處理從結構化和非結構化數(shù)據(jù)處理的角度介紹
2. 能夠處理大數(shù)據(jù)集的高性能數(shù)組計算工具
二赤嚼、Python語言概要
1. 是一種解釋型語言齐邦,通過“一次執(zhí)行一條語句”
2. 退出:exit()和Ctrl-D
3. 在終端上運行.py的文件
4. 科學計算程序員趨向于使用IPython(一種加強對交互式Python解釋器)
5. IPython:通過使用%run,會在同意進程中執(zhí)行指定文件代碼,是編號的風格(如:In[2]:)
三旬昭、基礎知識
1. 語言語義
2. 縮進,而不是大括號:建議4個空格作為默認縮進量
3. Python語句能不以分號結束菌湃,不建議一行放多個語句
4. 萬物皆對象:對象模型一致性
5. 注釋:#
6. 函數(shù)調用和對象方法調用:圓括號问拘,0個或者多個參數(shù)
7. 變量和按引用傳遞,變量傳遞的是引用惧所,指向同一個對象的兩個引用
8. 動態(tài)引用:對象引用沒有與之關聯(lián)的類型信息骤坐,變量其實就是對象在待定命名空間中的名稱而已,保存在它自己內部下愈。
9. 強類型: 所有對象都有個特定的類型纽绍,轉換需要很明顯的情況:insinstance,檢查類型
10. 對象既有屬性又有方法:obj.attribute_name 和getattr查詢
11. “鴨子”類型:一般不會關心對象的類型势似,只是關心有沒有某些方法或行為(例如具有迭代器協(xié)議拌夏,知道可以迭代)
12. 引入模塊(module):一個含有函數(shù)和變量定義以及其他.py文件的引入,import some_module ;from some_module import f,g,PI; import some_module as sm ;from some_module import PI as pi……
13. 大部分Python對象是可變的履因,對象或者值是可以修改障簿,而字符串和元組是不可變的,需要注重不可變(有強烈的副作用)
14. 標量類型:None/str/Unicode/float/bool/int/long
15. 3/2=1.5(保留一個浮點數(shù))3//2=1(圓整)
16. 字符串既可以’’也可以“”栅迄,換行字符串用三重引號卷谈,字符串是不可變,要修改必須創(chuàng)建新的霞篡。
17. 字符串是一串字符序列世蔗,可以當做序列處理,字符串可以相加朗兵。%表示帶插入值的目標
18. None不是一個保留關鍵字污淋,他只是NoneType的一個實例而已
19. datetime/date/time;strtime用于將datetime格式化為字符串余掖,字符串可以通過strptime函數(shù)解析為datetime
20. for循環(huán)用于對集合(比如列表或元組)或迭代器進行迭代:for value in collection/continue/break
21. pass是“空操作”語句
22. 異常處理: try/except/finally
23. range/xrange(非常長的范圍)寸爆,產(chǎn)生一組間隔平均的整數(shù)
24. 三元表達式:value=true-expr if condition else false-expr
數(shù)據(jù)結構和序列:
1, 元組
? 一維的盐欺,定長的不可變的Python對象序列赁豆,復雜的元組用圓括號,元組組成的元組
? 調用tuple冗美,任何序列或迭代器都可以轉換成元組魔种。
? 訪問元組通過[],訪問
? 元組雖不可變粉洼,但是可以:tup[1].append(3)
? 可以用+連接元組节预,可以*4叶摄,相當于生成4個連接在一起的元組副本
? 元組拆包:元組型變量表達式賦值:tup=(4,5,6);a,b,c=tup;b=5
? 元組拆包可以交換變量名,可以用于元組或類別組成的序列進行迭代
? 元組:Count:指定值出現(xiàn)的次數(shù)
2安拟, 列表
? 列表是變長的蛤吓,可修改的,用[]或list函數(shù)表示:b_list[1]=‘peekaboo’糠赦,將b的列表第二個元素修改成制定字符串
? append:將元素添加到列表的末尾会傲;insert將元素插入到列表的制定的位置;pop:移除指定位置元素拙泽;remove:按值刪除元素淌山;in:判斷是否含有某個值
? +:合并列表,extend:添加多個元素
? sort(可選關鍵字:key=len):排序
? bisect:二分查找以及對有序列表的插入奔滑。bisect.bisect:找出新元素插入的位置并保持原有序列的有序性艾岂,bisect.insort:插入到具體的位置
? 切片:通過索引運算符[start:stop],[:5],[::2],[::-1],[-4:],[-6:-2]
? 內置的序列函數(shù)
1) enumerate:跟蹤當前項的索引朋其。for i王浴,value in emumerate(colleciton)
2) sorted:可以返回一個新的有序列表
3) zip:將對各序列(列表,元組等)中的元素‘配對’梅猿,產(chǎn)生一個新的元組列表
4) reversed:逆序
3氓辣, 字典(dict):最重要的內置數(shù)據(jù)結構-hashmap/associative array
? 大小可變的鍵值對集,其中鍵(key)和(value)都是python對象袱蚓,字典的方式:使用{}并用冒號分割鍵和值钞啸。例子:{'a’:’some value’,’b’:[1,2,3,4]}
? 使用del關鍵字或pop方法可以刪除值
? 使用keys和values方法分布獲取鍵和值的列表:d1.keys()
? Update方法:一個字典可以被合并到另一個字典去
? 從序列類型創(chuàng)建字典:maping=dict(zip(range(5)),reversed(range(5)))
? 默認值:value=some_dict.get(key,defalult_value); by_letter.setdefalult(letter,[]).append(word);內置collections模塊中有defalutdict類,
? 字典鍵的有效類型喇潘,鍵必須是不可變對象体斩,如標量類型(整數(shù)、浮點數(shù)颖低、字符串)或元組(元組中的所有對象也必須是不可變的)絮吵,術語:可哈希性(hashability),hash函數(shù)
4, 集合
? 集合是由唯一元素組成的無序集忱屑,創(chuàng)建用set函數(shù)或用大括號包起來的集合字面量
? 集合支持各種數(shù)學集合預算蹬敲,如并、交莺戒、差以及對稱差等
5伴嗡, 列表、集合以及字典的推倒式
? 列表推導式:[expr for val in collection if condition]
? 字典的推導式:dict_comp={key-expr:value-expr for value in collection if condition}
? 集合推導式:set_comp={ expr for val in collection if condition }
? 嵌套列表推導式:多個for循環(huán)在一行
6从铲, 函數(shù)
? 重要的代碼組織和復用手段瘪校,def關鍵字聲明的,并使用return關鍵字返回
? 位置參數(shù)(positional)和關鍵字參數(shù)(keyword):通常制定默認值或可選參數(shù)食店,位于位置參數(shù)之后
? 局部命名空間渣淤,函數(shù)都是某個作用域的局部函數(shù)赏寇,可以返回多個值吉嫩。函數(shù)也是對象
? 匿名函數(shù)(lambda)
? 閉包:返回函數(shù)的函數(shù)价认,在一個外函數(shù)中定義了一個內函數(shù),內函數(shù)里運用了外函數(shù)的臨時變量自娩,并且外函數(shù)的返回值是內函數(shù)的引用用踩,外函數(shù)的臨時變量將來會在內函數(shù)中用到,這個臨時變量綁定給了內部函數(shù)忙迁。
? Func(a,b,c,d=some,e=value)脐彩,函數(shù)接收的是一個元組args和一個字典kwargs,內部:a,b,c=args;d=kwargs.get(‘d’,d_default_value); e=kwargs.get(‘e’,e_default_value)
? Currying姊扔,部分參數(shù)應用:從現(xiàn)有函數(shù)派生出新函數(shù)的技術
? 生成器:能以一種一致的方式對序列進行迭代(比如列表中的對象或文件中的行)是它重要的特定惠奸,這是通過一種叫做迭代器協(xié)議(iterator protocol它是一種使對象可迭代的通用方式)的方式實現(xiàn)。要創(chuàng)建生成器恰梢,只需將函數(shù)中的return替換為yeild.
? 生成器表達式:也有一個類似于列表佛南、字典、集合推導式的東西嵌言,其創(chuàng)建方式為嗅回,把列表推導式兩端的方括號改成圓括號:gen=(x**2 for x in xrange(100))
? Itertools模塊:其中有許多常見數(shù)據(jù)算法的生成器。例如:groupby可以接受任何序列和一個函數(shù)摧茴,根據(jù)函數(shù)的返回值對序列中的連續(xù)元素進行分組绵载。
7, 文件和操作系統(tǒng)
? Pandas.read.csv讀取數(shù)據(jù)文件
? Open
? Write/writelines