在 python 的函数中使用 Iterable 和 numeric 作为输入
Using Iterable and numeric as input in a function in python
我在 python
中写了一个均值函数
def mean(*args):
numbers = args
sm=0
length = len(numbers)
if length>0:
for num in numbers:
sm = sm+num
return sm/length
else:
return 'FAIL'
它可以很好地处理数值。现在我想修改它,让它也接受输入中的迭代。
修改函数:
def mean_new(*args):
numbers = args
sm=0
count=0
for num in numbers:
if iter(num):
data = list(num)
sm += sum(data)
count+=len(data)
else:
sm = sm+num
count+=1
return sm/count
mean_new 函数不工作并给我一个错误 'int' object is not iterable。你能帮我找出我在 mean_new 函数中做错了什么吗?
mean_new 函数应该适用于数字和可迭代输入。
要检查对象是否可迭代,您确实可以使用 iter(object)
,但不能作为 if
语句中的条件,而是在 try
块中,因为 [=如果对象不可迭代,14=] 将引发 TypeError
异常。但是,由于您丢弃了 iter()
返回的迭代器,而是使用 list()
构造函数将可迭代对象转换为列表,因此您可以简单地将 try
块放在 list()
而不是:
for num in numbers:
try:
data = list(num)
sm += sum(data)
count += len(data)
except TypeError:
sm = sm + num
count += 1
我在 python
中写了一个均值函数 def mean(*args):
numbers = args
sm=0
length = len(numbers)
if length>0:
for num in numbers:
sm = sm+num
return sm/length
else:
return 'FAIL'
它可以很好地处理数值。现在我想修改它,让它也接受输入中的迭代。
修改函数:
def mean_new(*args):
numbers = args
sm=0
count=0
for num in numbers:
if iter(num):
data = list(num)
sm += sum(data)
count+=len(data)
else:
sm = sm+num
count+=1
return sm/count
mean_new 函数不工作并给我一个错误 'int' object is not iterable。你能帮我找出我在 mean_new 函数中做错了什么吗? mean_new 函数应该适用于数字和可迭代输入。
要检查对象是否可迭代,您确实可以使用 iter(object)
,但不能作为 if
语句中的条件,而是在 try
块中,因为 [=如果对象不可迭代,14=] 将引发 TypeError
异常。但是,由于您丢弃了 iter()
返回的迭代器,而是使用 list()
构造函数将可迭代对象转换为列表,因此您可以简单地将 try
块放在 list()
而不是:
for num in numbers:
try:
data = list(num)
sm += sum(data)
count += len(data)
except TypeError:
sm = sm + num
count += 1