我是编程和 Python 的新手,在上大学之前我正在自学,所以请保持温柔,我是新手。我希望我的英语不会有太多语法错误。
基本上,我在目前正在阅读的一本书中进行了此练习,将元组列表作为函数参数,然后获取每个元组中的每个项目并将其乘以二次方并对项目求和。
我的代码看起来像这样,如果我的函数调用包含与循环函数所需的参数数量相同的参数,则它可以正常工作:
def summary(xs):
for x,y,z in xs:
print( x*x + y*y + z*z)
xs =[(2,3,4), (2,-3,4), (1,2,3)]
summary(xs)
但是,如果我使用元组少于函数定义的列表,我会得到一个错误:ValueError:没有足够的值来解压(预期 3,得到 0):
xs =[(2,3,4), (), (1,2,3)]
我想知道如何制作一个函数来接受我之前显示的元组 () - 没有元组,函数将返回 0。我已经尝试了多种方法来解决这个问题 2 天了,谷歌搜索也是如此,但我发现我要么遗漏了一些东西,要么我不知道我可以使用的功能。谢谢大家的帮助。
最佳答案
一种方法是遍历元组值,这也是几乎所有编程语言中解决此问题的方法:
def summary(xs):
for item in xs:
s = 0
for value in item:
s += value**2
print(s)
或者使用列表理解:
def summary(xs):
for item in xs:
result = sum([x**2 for x in item])
print(result)
另请注意,sum([])
将为空的可迭代对象返回 0
。
关于python - 列表中的元组比函数需要的项目少 Python 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50709759/