1. 一行代码实现对列表a中的偶数位置的元素进行加3后求和?比如 a = [1, 2, 3, 4, 5], 求和结果为 24
使用sum加切片
sum([x+3 for x in a[1::2]])
使用reduce函数
reduce(lambda x, y: x+y, [x+3 for x in a[1::2])
2. 请写出执⾏如下脚本后在控制台输出的内容:
2. 请写出执⾏如下脚本后在控制台输出的内容:
import copy
a = [[1, 2, 3], [4, 5, 6]]
b=a
c = copy.copy(a)
a.append(7)
a[1][2] = 10
print(b)
print(c)
b=a,是对象的引用,显然b就是
[[1, 2, 3], [4, 5, 10], 7]
c是对a的一个浅拷贝,但a增加一个元素,c却不会增加,原因是地址的问题。c只是拷贝了原地址,不知道新来的东西,但是对a[1][2]的修改是用的。
from functools import reduce
L = reduce(lambda x,y: x+y, [[i]*i for i in range(1,6)])
print(L)
#[[1],[2,2],[3,3,3],[4,4,4,4],[5,5,5,5,5]]
[1,2,2,3,3,3,4,4,4,4,5,5,5,5,5]
终于有点懂装饰器的意义了,大概就是把原来的函数包装起来在传给原函数,这样原函数不用改动就能增加功能,decorator真的很强大。加油!!!
4. 编写装饰器,使得函数在被修饰后在调⽤时多打印⼀行字符串
def decor(func):
def warpper():
print("hello")
func()
return warpper
@decor
def say_happy():
print("I'm very happy!")
if __name__ == "__main__":
say_happy()
5. 实现统计一篇英文文章内每个单词的出现频率,并返回出现频率最高的前10个单词及其出现次数
直接使用collections的Counter容器
import re
from collections import Counter
with open('1.txt', 'r', ) as f:
words = f.read() # 将文件的内容全部读取成一个字符串
count = Counter(re.split(r"\W+", words)) # 以单词为分隔
result = count.most_common(10) # 统计最常使用的前10个
print(result)
人为分割,Python字典排序
result = sorted(word_dict.items(), key=lambda d: d[1], reverse=True)[:10]
print(result)