- 请尽可能列举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])
方法二:reduce(lambda x,y:x+y,[a[i]+(i+1)%2*3 for i in range(0,len(a))]
- 将列表a的元素顺序打乱,再对a进行排序得到列表b,然后把a和b按元素顺序构造一个字典d。 答:
shuffer(a)b = sorted(a, reverse=True)dict_new = dict(zip(a, b))
- 用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 topWordsif __name__=='__main__': test()
3、简述python GIL的概念, 以及它对python多线程的影响?编写一个多线程抓取网页的程序,并阐明多线程抓取程序是否可比单线程性能有提升,并解释原因。
4、用python编写一个线程安全的单例模式实现。
- 装饰器介绍:
- 实现:
5、请回答一下问题:
(1) 阐述一下装饰器,描述符(property)、元类的概念,并列举其应用场景;
(2) 如何动态获取和设置对象的属性。