如何检查给函数的参数是否为列表?

问题描述:

我会喜欢该函数返回一个评论,如果参数给不是一个列表。如果它是一个列表,我想要执行一些操作。如何检查给函数的参数是否为列表?

下面

是代码:

def manipulate_data(*num): 
    if type(num) is not list: 
    return "Only lists allowed" 
    else: 
    positive = 0 
    for n in num: 
     if n >= 0: 
      positive = positive + 1 
+1

而_what_是你的问题吗? –

+3

'num'的类型总是'tuple'。删除'*'和代码将工作。 – vaultah

+0

'如果不是isinstance(num,list):' – Chr

通过使用你的包装所有的参数到一个列表中的* NUMS说法。 official documentation可能会有用。

manipulate_data(1, 2, 3, 4, 5)将导致num = (1, 2, 3, 4, 5)manipulate_data([1, 2, 3, 4, 5])将导致num = ([1, 2, 3, 4, 5],)这是一个只有一个元素的元组。删除*或者需要处理多个列表,因为参数使用循环对每个元组元素进行检查。

def manipulate_data(num): 
    if type(num) is not list: 
    return "Only lists allowed" 
    else: 
    positive = 0 
    for n in num: 
     if n >= 0: 
      positive += 1 
    return positive 
def manipulate_multiple(*nums): 
    for num in nums: 
    manipulate_data(num) 

记住这个功能没有返回任何尚未

+0

你的回答指出了我的正确方向,但是,我想要做的是用提供的列表执行操作。例如,如果提供的列表是[1,3,2,3],我希望能够返回列表中元素的总和,示例应返回9.代码返回1 – Weirdsourcer

+0

@ Weirdsourcer函数正如我所提到的那样,它没有返回任何东西,编辑它以返回正数,因为它正在计数它们。为了添加所有元素,请尝试使用'sum(num)' – Adirio

OK,使其更干净,除了A,B,无不留下位置参数会被传递到c

>>> def func(a, b, *c): 
...  print a 
...  print b 
...  print c 

...

>>> func(1, 2, 3, 4, 5) 

1 
2 
(3, 4, 5) 
+0

答案不能解释用户为什么发生这种情况,或者在哪里找到关于此的文档。至少应该提供一些关键字用于Google搜索 – Adirio