Skip to main content
 首页 » 编程设计

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

2025年05月04日1798°冷暖

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

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