python面試題 二

2021-09-24 13:06:13 字數 3822 閱讀 5584

[[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 random

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