- 请尽可能列举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 topWords
if __name__=='__main__':
test()
3、简述python GIL的概念, 以及它对python多线程的影响?编写一个多线程抓取网页的程序,并阐明多线程抓取程序是否可比单线程性能有提升,并解释原因。
4、用python编写一个线程安全的单例模式实现。
5、请回答一下问题:
(1) 阐述一下装饰器,描述符(property)、元类的概念,并列举其应用场景;
(2) 如何动态获取和设置对象的属性。