【问题标题】:how to return two values in a tuple in python function如何在python函数的元组中返回两个值
【发布时间】:2021-03-14 13:10:36
【问题描述】:

我需要解决一个任务: 一个函数filter_list,它只接受一个参数(整数列表)并在一个元组中返回两个值

  1. 列表中 >= 13 和
  2. 列表中 >0 和 13 倍的元素总和

所以我对如何实现这一点有了概念上的理解,但是当我开始编写代码时,我无法将这两个值分配给函数外部的新变量。

numbers = [1, 10, 13, 23, 34, 45, 90]

    def filter_list(nums):
        for e in nums:
            result1 = sum(e for e in nums if e >= 13 and e <= 97)
            return result1
        for e in nums:
            result2 = sum(e for e in nums if e>0 and e % 13 == 0)
            return result2
        print(result1, result2)
    
print(filter_list(numbers))

result_sum = filter_list(numbers)

print(result_sum)

【问题讨论】:

  • 一旦你点击了return 语句,函数就会退出并且不会继续运行。因此,对于您的第一个 for 循环的第一次迭代,它将退出。它永远不会到达任何其他迭代,当然也不会到达第二个 for 循环。

标签: python function loops for-loop


【解决方案1】:
def filter_list(nums):
    result1 = sum(e for e in nums if 97 >= e >= 13)
    result2 = sum(e for e in nums if e > 0 and e % 13 == 0)
    print(result1, result2)
    return result1, result2

你不需要做一个for loop 然后在里面另一个。同样在您return 之后,该功能将退出,您将无法再做任何事情。所以你必须存储变量然后立即返回它们。

【讨论】:

    【解决方案2】:
    def filter_list(nums):
        for e in nums:
            result1 = sum(e for e in nums if e >= 13 and e <= 97)
            result2 = sum(e for e in nums if e>0 and e % 13 == 0)
        return (result1,result2)
    
    numbers = [1, 10, 13, 23, 34, 45, 90]
    
    result_sum = filter_list(numbers)
    
    print(result_sum)
    

    输出:(205, 13)

    我刚刚对你的代码做了一个小的修正。

    函数不会在 return 语句之后执行。

    在您的情况下,该函数返回结果 1 并返回到主代码。

    编辑:

     def filter_list(nums):
        result1 = sum(e for e in nums if e >= 13 and e <= 97)
        result2 = sum(e for e in nums if e>0 and e % 13 == 0)
    return (result1,result2)
    
    numbers = [1, 10, 13, 23, 34, 45, 90]
    
    result_sum = filter_list(numbers)
    
    print(result_sum)
    

    输出:(205, 13)

    【讨论】:

    • 你的代码有问题,和他代码的问题类似,就是双for loop的概念。如果要对内部循环求和,则不需要第一个 for loop
    • 对不起,我没有专注于逻辑,只是想弄清楚功能,谢谢队友:)
    猜你喜欢
    • 2012-04-02
    • 1970-01-01
    • 2021-04-13
    • 2013-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-05
    • 2019-12-13
    相关资源
    最近更新 更多