Skip to main content
 首页 » 编程设计

python之返回列表的元素,直到第一个偶数

2025年05月04日13tintown

我正在编写一个函数,它将返回列表中的元素,直到所述列表中的第一个偶数。

def up_to_even(list): 
    new_list = [] 
    for num in list: 
        if num % 2 != 0: 
            new_list.append(num) 
        else:  
            return new_list 

我做错了什么?

请您参考如下方法:

您当前的功能运行良好。当找到偶数时,它会停止向结果列表中添加元素。

但是,这里使用 for 循环是受控迭代,只有当您要检查列表中的每个元素时才需要这样做。这就是为什么您当前的函数需要有一个特殊的 else 案例来专门跳出循环并返回结果列表。

由于您不知道何时会遇到偶数,因此可以改用 while 循环,也称为不受控制的迭代。

这是一个例子:

lst = [1, 3, 5, 7, 8] 
 
i = 0 
result = [] 
while lst[i] % 2 != 0: 
    result.append(lst[i]) 
    i += 1 
 
print(result) 
# [1, 3, 5, 7] 

请记住,您始终可以使用 itertools.takewhile()也这样做:

import itertools 
 
lst = [1, 3, 5, 7, 8] 
 
result = list(itertools.takewhile(lambda x : x % 2 != 0, lst)) 
 
print(result) 
# [1, 3, 5, 7] 

注意:使用lambda这里只是当场创建一个匿名函数。如果您不想使用它,您可以创建自己的辅助函数:

def evens(x): 
    return x % 2 != 0 

并以同样的方式调用 itertools.takewhile():

result = list(itertools.takewhile(evens, lst))