[[x for x in range(1,n+1)][i:i+3] for i in range(0,len(n),3)]
術語叫貪婪匹配( <.> )和非貪婪匹配(<.?> )例如:test
test
答:單引號和雙引號是等效的,如果要換行,需要符號(),三引號則可以直接換行,並且可以包含注釋如果要表示let』s go 這個字串
單引號:s4 = 『let\』s go』
雙引號:s5 = 「let』s go」
s6 = 『i realy like「python」!』
這就是單引號和雙引號都可以表示字串的原因了
方法一: 可以通過生成器,分多次讀取,每次讀取數量相對少的資料(比如500mb)進行處理,處理結束後 在讀取後面的 500mb的資料。方法二: 可以通過linux命令split切割成小檔案,然後再對資料進行處理,此方法效率比較高。可以按照行 數切割,可以按照檔案大小切割。
> 1. def get_lines():
> 2. l =
> 3. with open(『file.txt』,『rb』) as f:
> 4. for eachline in f:
> 6. return l
> 7. if __name__ == 『__main__』:
> 8. for e in get_lines():
> 9. process(e) #處理每一行資料
現在要處理乙個大小為 10g 的檔案,但是記憶體只有 4g,如果在只修改 get_lines 函式而其他代
碼保持不變的情況下,應該如何實現?需要考慮的問題都有哪些?
1. def get_lines():
2. l =
3. with open(『file.txt』,』rb』) as f:
4. data = f.readlines(60000)
6. yield l
要考慮到的問題有:
記憶體只有4g無法一次性讀入10g的檔案,需要分批讀入。分批讀入資料要記錄每次讀入資料的位
置。分批每次讀入資料的大小,太小就會在讀取操作上花費過多時間。
1.def print_directory_contents(spath):
2. """
3. 這個函式接收資料夾的名稱作為輸入引數
4. 返回該資料夾中檔案的路徑
5. 以及其包含資料夾中檔案的路徑
6. """
7. # 補充**
8. ------------**如下-------------------
9. import os
10.for schild in os.listdir(spath):
11. schildpath = os.path.join(spath, schild)
12. if os.path.isdir(schildpath):
13. print_directory_contents(schildpath)
14. else:
15. print(schildpath)
一、賦值在python中,物件的賦值就是簡單的物件引用,這點和c++不同,如下所示:
a = [1,2,「hello」,[『python』, 『c++』]]
b = a
在上述情況下,a和b是一樣的,他們指向同一片記憶體,b不過是a的別名,是引用。
二、淺拷貝(shallow copy)
深拷貝只有一種形式,copy模組中的deepcopy()函式。
深拷貝和淺拷貝對應,深拷貝拷貝了物件的所有元素,包括多層巢狀的元素。因此,它的時間和空
間開銷要高。
同樣的對列表a,如果使用 b = copy.deepcopy(a),再修改列表b將不會影響到列表a,即使嵌
套的列表具有更深的層次,也不會產生任何影響,因為深拷貝拷貝出來的物件根本就是乙個全新的物件,
不再與原來的物件有任何的關聯。
import randomrandom.shuffle(alist)
python 是強型別的動態指令碼語言。強型別:不允許不同型別相加。
動態:不使用顯示資料型別宣告,且確定乙個變數的型別是在第一次給它賦值的時候。
指令碼語言:一般也是解釋型語言,執行**只需要乙個直譯器,不需要編譯。
python中,乙個變數的作用域總是由在**中被賦值的地方所決定。當python遇到乙個變數的話它會按照這的順序進行搜尋:
本地作用域(local)—>當前作用域被嵌入的本地作用域(enclosing locals)—>全域性/模組作用域
(global)—>內建作用域(built-in)。
linux系統中grep命令是一種強大的文字搜尋工具,它能使用正規表示式搜尋文字,並把匹配的行列印出來。
grep全稱是global regular expression print,表示全域性正規表示式版本,它的使用許可權
是所有使用者。
linux下的find:
功能:在目錄結構中搜尋檔案,並執行指定的操作。此命令提供了相當多的查詢條件,功能很強大。
語法:find 起始目錄尋找條件操作
說明:find命令從指定的起始目錄開始,遞迴地搜尋其各個子目錄,查詢滿足尋找條件的檔案並對
之採取相關的操作。
簡單點說說,grep是查詢匹配條件的行,find是搜尋匹配條件的檔案
1、git merge 衝突了,根據提示找到衝突的檔案,解決衝突如果檔案有衝突,那麼會有類似的標記2、修改完之後,執行 git add 衝突檔名
3、git commit 注意:沒有-m 選項 進去類似於 vim 的操作介面,把conflict 相關的行刪除掉
直接 push 就可以了,因為剛剛已經執行過相關 merge 操作了。
sorted(d.items(),key = lambda x:x[1]) 。
字典是一種資料結構,json是一種資料的表現形式,字典的key值只要是能hash的就行,json的 必須是字串。
可變不可變指的是記憶體中的值是否可以被改變,不可變型別指的是物件所在記憶體塊裡面的值不可以
改變,有數值、字串、元組;可變型別則是可以改變,主要有列表、字典。
print(『astr』[::-1])
alist [,,]2.def sort_by_age(list1):
return sorted(alist,key=lambda x:x[『age』],reverse=true)
a、b 中相同元素:print(set(a)&set(b))a、b 中不同元素:print(set(a)^set(b))
Python 面試題(二)
1 什麼是lambda函式?它有什麼好處?另外python在函式程式設計方面提供了些什麼函式和語法?lambda是python中的匿名函式。它語法簡單,簡化 不會產生命名衝突,汙染命名空間。python提供了map,reduce,filter等函式方法,提供了裝飾器,閉包等語法 2 詳細說說tupl...
python語法面試題 python面試題
1.去重,集合 集合的乙個重要特點是 自動去除重複的值 li 1,2,3,1,1,2,2,3,3 去除重複的元素 set set li 轉換為集合,因為集合會自動去重。print set li list set 將集合轉換為列表print li 2.生成器 規則 生成器函式,或者生成器表示式,在呼叫...
Python面試題大全(二)
原文 1.python中類方法 類例項方法 靜態方法有何區別?區別 使用示例 python 1 class a object 2def foo self,x 3 類例項方法 4print executing foo s,s self,x 56 classmethod 7def class foo c...