python筆試題---實踐知識點

  1. 請儘量列舉python列表的成員方法,並給出一下列表操做的答案:
  • a=[1, 2, 3, 4, 5], 一行代碼實現對列表a中的偶數位置的元素進行加3後求和?

答:方法一:reduce(lambda x,y:x+y,[i+(a.index(i)+1)%2*3 for i in a])html

方法二:reduce(lambda x,y:x+y,[a[i]+(i+1)%2*3 for i in range(0,len(a))]python

  • 將列表a的元素順序打亂,再對a進行排序獲得列表b,而後把a和b按元素順序構造一個字典d。 答:
shuffer(a)
b = sorted(a, reverse=True)
dict_new = dict(zip(a, b))
  1. 用python實現統計一篇英文文章內每一個單詞的出現頻率,並返回出現頻率最高的前10個單詞及其出現次數,並解答如下問題?(標點符號可忽略)
  • 建立文件對象f後,解釋f的readlines和xreadlines方法的區別?

答:1.readlines() 一次讀取整個文件,象 .read() 同樣且.readlines() 自動將文件內容分析成一個行的列表。另外一方面,.readline() 每次只讀取一行,一般比 .readlines() 慢得多。僅當沒有足夠內存能夠一次讀取整個文件時,才應該使用 .readline()。安全

2.readlines返回列表,xreadlines返回迭代器。多線程

  • 追加需求:引號內元素須要算做一個單詞,如何實現?
def findTopFreqWords(filename, num=1):
    'Find Top Frequent Words:'
    fp = open(filename, 'r')
    text = fp.read()
    fp.close()

    lst = re.split('[0-9\W]+', text)

    # create words set, no repeat
    words = set(lst)
    d = {}
    for word in words:
        d[word] = lst.count(word)
    del d['']
    
    result = []
    for key, value in sorted(d.iteritems(), key=lambda (k,v): (v,k),reverse=True):
        result.append((key, value))
    return result[:num]

def test():
    topWords = findTopFreqWords('test.txt',10)
    print topWords

if __name__=='__main__':
    test()

三、簡述python GIL的概念, 以及它對python多線程的影響?編寫一個多線程抓取網頁的程序,並闡明多線程抓取程序是否可比單線程性能有提高,並解釋緣由。app

四、用python編寫一個線程安全的單例模式實現。性能

五、請回答一下問題:.net

(1) 闡述一下裝飾器,描述符(property)、元類的概念,並列舉其應用場景;線程

(2) 如何動態獲取和設置對象的屬性。code

相關文章
相關標籤/搜索