001.模仿静态变量的用法
【思路】:不是很清楚什么意思,直接看了官网的解答。如果是函数中的局部变量,每次调用函数都会初始化。而类中的变量,创建类的时候初始化,每次执行类中的函数的时候,不会初始化类变量。看起来是想说这么个意思。
def varfunc():
var = 0
print('var = %d' % var)
var += 1
if __name__ == '__main__':
for i in range(3):
varfunc()
# StaticVar作为类的一个属性,相当于静态变量
class Static:
StaticVar = 5
def varfunc(self):
self.StaticVar += 1
print(self.StaticVar)
print(Static.StaticVar)
a = Static()
for i in range(3):
a.varfunc()
002.学习使用auto定义变量的用法
【思路】:同样没看懂题意,看了下官网答案
发现实际是想说变量作用域, python是有分局部变量、全局变量的等区分的。
num = 2
def autofunc():
num = 1
print('internal block num = %d'%num)
num += 1
for i in range(3):
print('The num = %d'%num)
num += 1
autofunc()
以上实例输出结果为:
The num = 2
internal block num = 1
The num = 3
internal block num = 1
The num = 4
internal block num = 1
题目003:两个3*3的矩阵,实现其对应位置的数据相加,并返回一个新矩阵:
X = [[12,7,3],
[ 4,5,6],
[ 7,8,9]] Y = [[5,8,1],
[ 6,7,3],
[ 4,5,9]]
【思路】:自己写了一个,但是印象里python是有矩阵计算工具的。
官网就有人用该工具numpy写了一下,很简洁。
x = [[12,7,3],[4,5,6],[7,8,9]] y = [[5,8,1],[6,7,3],[4,5,9]] z = x[:] for i in range(3):
for j in range(3):
z[i][j]=x[i][j]+y[i][j] print(z)
def tm044_1():
import numpy # pip install numpy 需要安装模块
x = numpy.array([[12,7,3],[4,5,6],[7,8,9]])
y = numpy.array([[5,8,1],[6,7,3],[4,5,9]])
z = x+y
print(z)
题目004:统计 1 到 100 之和。
【思路】:简单,但官网有人写的更简单
s = 0
for i in range(1,101):
s+=i
print(s)
# 更简洁的方法
print(sum(range(1,101)))
题目005:使用lambda来创建匿名函数。
#lambda函数也叫匿名函数,即,函数没有具体的名称。先来看一个最简单例子:
def f(x):
return x**2
print(f(4))
#Python中使用lambda的话,写成这样
g = lambda x:x**2
print(g(4))
#lambda存在意义就是对简单函数的简洁表示。
#lambda语句中,冒号前是参数,可以有多个,用逗号隔开,冒号右边的返回值。
#常搭配内置函数map、filter、reduce,都是应用于序列的内置函数。常见的序列包括list、tuple、str。
#map(func, *iterables) --> map object
#filter(function or None, iterable) --> filter object
#reduce(function, sequence[, initial]) -> value
foo = [2, 18, 9, 22, 17, 24, 8, 12, 27] print(list(map(lambda x: x * 2 + 10, foo))) # 映射 [14, 46, 28, 54, 44, 58, 26, 34, 64]
print(list(filter(lambda x: x % 3 == 0, foo))) # 过滤 [18, 9, 24, 12, 27] from functools import reduce # 在Python 3里,reduce()函
数已经被从全局名字空间里移除了,它现在被放置在fucntools模块里
print(reduce(lambda x, y: x + y, foo)) # 累积 139