返回列表的第一个数字

时间:2018-10-13 05:00:52

标签: python list generator

因此,我正在尝试创建一个脚本,在该脚本中返回确定列表的第一个偶数。如果列表中没有偶数,则返回-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    

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

4 个答案:

答案 0 :(得分:4)

在生成器上使用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

答案 1 :(得分:0)

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

您可以将-1分配给even,然后在循环中对其进行更新。如果循环中没有偶数,则它仍为-1,因此该方法将返回-1。

答案 2 :(得分:0)

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

-1

答案 3 :(得分:0)

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))

OP:

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