python - 列表中的元组比函数需要的项目少 Python 3

标签 python python-3.x list function tuples

我是编程和 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/

相关文章:

python - 减少最简单值的路径?

python - 训练 uNet 模型预测只有黑色

jquery:将Class 1,2,3等自动添加到列表中

python - 循环将列表列表分配到数组中

Python Pandas "no module named format"

python - matplotlib:在忽略缺失数据的点之间画线

python-2.7 - Pandas 从 python 中的字符串列中删除数字

C++ - 静态列表,当满时从头部弹出节点

python - 来自包内的 imp.load_source

python - Pandas 根据列中的最小值到最大值对行重新排序