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

相关文章
相关标签/搜索