【问题标题】:Python: What am I doing wrong?蟒蛇:我做错了什么?
【发布时间】:2011-09-16 04:20:26
【问题描述】:

我想让这个功能工作:

def getEvenNumbers (numbers):

    bo = []
    for num in numbers:
         bo.append(num)
         if num % 2 == 0:
           return bo

getEvenNumbers([1, 4, 8, 9]) 虽然返回 [4]

我希望得到更多类似[4,8] 的结果,但它不起作用,我只得到[4]?我做错了什么?

【问题讨论】:

  • 与您不久前问过的Python: Return list result problem in a function 重复。请更仔细地阅读它的答案,我的确切显示了如何做到这一点 - 累积到一个列表然后在完成时返回。
  • 是的...agf...我遵循了这一步...更多的原因是我什至对做错了什么感到困惑
  • @agf 这个问题怎么会被骗?

标签: python list function


【解决方案1】:

一旦发现其中一个数字是偶数,您就会返回。

def get_even_numbers(numbers):
    bo = []
    for num in numbers:
        if num % 2 == 0:
            bo.append(num)
    return bo

或者:

def get_even_numbers(l):
    return [n for n in l if n % 2 == 0]

【讨论】:

  • 好的,我只是想弄清楚这一点。我以前也发生过一次,并认为这是我做过的事情。
  • 谢谢 NullUser...不敢相信它只是返回函数的位置...非常感谢
【解决方案2】:

实际上,您当前给出的代码将返回 [1, 4],而不是 [4]。您的函数目前只是将数字附加到列表中,直到找到第一个偶数,然后返回。

你想要这样的东西:

def getEvenNumbers(numbers):
    return [n for n in numbers if not n % 2]

【讨论】:

    【解决方案3】:

    试试这个:

    def getEvenNumbers (numbers):
    
        bo = []
        for num in numbers:
             if num % 2 == 0:
               bo.append(num)
        return bo
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-17
      • 2023-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-01
      • 1970-01-01
      • 2021-01-14
      相关资源
      最近更新 更多