【问题标题】:Returning the First Number of a List返回列表的第一个数字
【发布时间】:2018-10-13 05:00:51
【问题描述】:

所以,我正在尝试创建一个脚本,其中返回已确定列表的第一个偶数。如果列表不包含偶数,则返回 -1。

起初我试图使用str.find(),但我只是不知道如何使它工作。 有什么帮助吗?

from typing import List

def f_even(items: List[int]) -> int:
"""
>>>f_even([1, 3, 4, 6])
4
>>>f_even([1, 3])
-1
"""
even_numbers = []
even = even_numbers[0]

for number in items:   
    if number % 2 == 0:
        even_numbers.append(number)                
return even    

现在我得到一个错误 where even = even_numbers[0];索引超出范围。我觉得我把这段代码复杂化了很多。

【问题讨论】:

    标签: python list generator


    【解决方案1】:

    在生成器上使用 next() 并返回 -1 用于非偶数情况。

    lst = [1, 3, 4, 6]
    print(next((x for x in lst if x % 2 == 0), -1))
    # 4
    

    在特殊情况下(没有偶数):

    lst = [1, 3, 3, 9]
    print(next((x for x in lst if x % 2 == 0), -1))
    # -1
    

    【讨论】:

    • 从技术上讲,暗示提供第二个参数正在处理异常是不正确的。相反,当可迭代对象为空时不会引发异常。
    • @PatrickHaugh,我措辞错误。谢谢你的好眼光。
    • 感谢您的帮助 :);但是,不能在我的函数中使用 next()
    • @JuanSBernal,如果你被允许使用它,你绝对可以在你的函数中使用它。
    【解决方案2】:

    您可以在尝试调用even[0] 之前使用if/else 块,如果您的even 具有值,那么您可以调用even[0] 否则返回/打印-1

    even = []
    for number in items:
        if not number % 2:
            even.append(number)
    if even:
        print(even[0])
    else:
        print(-1)
    

    【讨论】:

      【解决方案3】:

      那是因为在您创建 even_numbers 之后,列表是空的,even = even_numbers[0] 尝试获取其中不存在的第一个元素。

      您可以将-1 分配给even,然后在循环中更新它。如果循环中没有偶数,它仍然是-1,所以该方法将返回-1。

      【讨论】:

        【解决方案4】:
        a = [1,2,3,4]
        b = [1,3,5,7]
        
        def even(x):
          for a in x:
            if a%2==0:
              f = 0
              break
          else:
            f = -1
        
          return f
        
        print(a,even(a))
        print(b,even(b))
        

        操作:

        ([1, 2, 3, 4], 0)
        ([1, 3, 5, 7], -1)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-01-04
          • 2012-03-14
          • 2011-04-08
          • 1970-01-01
          • 1970-01-01
          • 2022-08-12
          • 1970-01-01
          相关资源
          最近更新 更多