python - 如何制作一个可以处理单个输入或输入列表的函数
问题描述
我将用几个只是平方数的过于简单的函数来说明我的问题。但这是编写我想知道的函数的一般最佳实践。
假设我有一个想要平方的数字,我可以编写以下函数。
def square (x):
y = x**2
return y
如果我有一个数字列表并想获得每个元素平方的列表,我可以使用
def square (x_list):
y_list = []
for x in x_list:
y_list.append( x**2 )
return y_list
但我只想写一个函数来处理这两种情况。它将查看输入是数字还是列表,并采取相应的行动。我可以使用type
检测类型来做到这一点,但我想知道最pythonic的方法是什么。
解决方案
如果你使用 numpy,这非常简单。对于多个元素,使其成为一个数组。对于单个元素,函数作为它应用。
import numpy as np
def square(a):
return a**2
a = np.array([2,3,4,5])
print(square(a)) # array([ 4, 9, 16, 25])
b = 9
print(square(b)) # 81
推荐阅读
- ruby-on-rails - 使用不同表中的字段设计登录 - 与用户相关
- typescript - Cordova with Angular - 使用 Typescript 文件进行调试?
- android - Android Bitmap.copyPixelsFromBuffer SIGSEGV
- python - pytesseract.image_to_string() 没有给出任何输出
- android - Android重新加载网格视图自定义适配器
- reactjs - React Production Build 在页面刷新时显示 404
- r - 计算R中时间戳的重叠
- php - Plesk/PHP 仅接受来自您的域的请求
- c# - 在 Asp.Net Core 2.x 中使用查询字符串重定向
- javascript - 自定义钩子是像函数组件 wrt 钩子这样的特殊功能吗?