python - 创建一个以列表或整数作为参数的函数 (Python)

标签 python list function python-2.7

我正在尝试创建一个函数,将数字列表或整数的平均值作为变量给出。到目前为止,我有:

def average(*args):
    if type(args) is list:
        for x in args:
            print sum(x) / float(len(x))
    else:
        for x in args:
            args = list(args)
            print sum(x) / float(len(x))

当我输入一个列表时,比如

average([1, 3, 5, 2])

效果很好。但是当我进入

average(1, 3, 5, 2)

它给出“TypeError:‘int’对象不可迭代”。 我检查了其他问题,但似乎没有一个解决方案有效。我试图检查它是否是一个包含 type() 和 isinstance() 的列表,但每当我让其中一个工作时,另一个就会抛出错误。

最佳答案

args 是一个元组,所以检查 args[0] 是否是 args[0] 内容总和的列表,如果只是 int 被传递到 sum args :

def average(*args):
    if isinstance(args[0],list):
        print(sum(args[0]) / float(len(args[0])))
    else:
        print (sum(args) / float(len(args)))


In [2]: average(1, 3, 5, 2)
2.75

In [3]: average([1, 3, 5, 2])
2.75

如果你想接受元组,使用collections.Iterable:

from collections import Iterable
def average(*args):
    if isinstance(args[0],Iterable):
        print(sum(args[0]) / float(len(args[0])))
    else:
        print (sum(args) / float(len(args)))

In [5]: average([1, 3, 5, 2])
2.75

In [6]: average(1, 3, 5, 2)
2.75

In [7]: average((1, 3, 5, 2))
2.75

关于python - 创建一个以列表或整数作为参数的函数 (Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26579033/

相关文章:

Python 子进程不支持复杂的 Linux 命令

Python dataframe - 3 列中的数据值映射到其他 3 列下

c# - 从 List<object> 中查找多个唯一匹配项,其中两个条件必须不同

javascript - 如何在按下按键时更改 div 的值

JavaScript 函数无法处理事件

python - 在python中乘以变量时如何添加空格

Python 3.4 - Pandas - 帮助正确排列数据框列和删除无效列

python - 将列表列表构建为 csv/Excel 的列和行

c# - 在c#中使用字符串数据类型列表创建元组

javascript - Grails 2.0 : Use Service in javascript function in GSP