如何检查给函数的参数是否为列表?
我会喜欢该函数返回一个评论,如果参数给不是一个列表。如果它是一个列表,我想要执行一些操作。如何检查给函数的参数是否为列表?
下面是代码:
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
通过使用你的包装所有的参数到一个列表中的* 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)
记住这个功能没有返回任何尚未
你的回答指出了我的正确方向,但是,我想要做的是用提供的列表执行操作。例如,如果提供的列表是[1,3,2,3],我希望能够返回列表中元素的总和,示例应返回9.代码返回1 – Weirdsourcer
@ 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)
答案不能解释用户为什么发生这种情况,或者在哪里找到关于此的文档。至少应该提供一些关键字用于Google搜索 – Adirio
而_what_是你的问题吗? –
'num'的类型总是'tuple'。删除'*'和代码将工作。 – vaultah
'如果不是isinstance(num,list):' – Chr