随机生成50个6维向量,利用修饰器可以完成求和,求均值和不输出三种操作 python代码
时间: 2024-02-09 07:12:53 浏览: 33
好的,以下是利用修饰器完成求和、求均值和不输出三种操作的Python代码示例:
```python
import random
def sum_mean_nooutput(func):
def wrapper(vectors):
result = func(vectors)
return result
return wrapper
@sum_mean_nooutput
def sum_vectors(vectors):
return [sum(x) for x in zip(*vectors)]
@sum_mean_nooutput
def mean_vectors(vectors):
return [sum(x)/len(vectors) for x in zip(*vectors)]
@sum_mean_nooutput
def no_output(vectors):
pass
# 生成50个6维向量
vectors = [[random.randint(1, 10) for i in range(6)] for j in range(50)]
# 求和
print("求和结果:", sum_vectors(vectors))
# 求均值
print("求均值结果:", mean_vectors(vectors))
# 不输出
no_output(vectors)
print("不输出结果:无")
```
解释一下代码:
1. 首先定义一个修饰器`sum_mean_nooutput`,该修饰器的作用是接收一个函数作为参数,返回一个新的函数`wrapper`。
2. 在修饰器中定义`wrapper`函数,该函数接收一个参数`vectors`,并将其传递给被修饰的函数`func`。`wrapper`函数返回`func`函数的执行结果。
3. 定义三个函数`sum_vectors`、`mean_vectors`、`no_output`,它们都被`sum_mean_nooutput`修饰器修饰。这意味着它们会先执行`sum_mean_nooutput`修饰器中的`wrapper`函数,然后再执行自身的代码。
4. `sum_vectors`函数实现了对向量列表中每个向量对应元素的求和,返回一个包含6个元素的列表,每个元素是对应向量元素的和。
5. `mean_vectors`函数实现了对向量列表中每个向量对应元素的求平均值,返回一个包含6个元素的列表,每个元素是对应向量元素的平均值。
6. `no_output`函数没有任何输出,只是一个空函数。
7. 在主程序中,首先生成50个6维向量,并分别传递给三个被修饰的函数。`sum_vectors`和`mean_vectors`函数分别输出结果,`no_output`函数没有任何输出。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)