首页 > 解决方案 > 打印给定列表中的偶数

问题描述

我从 python 开始并练习代码以从列表中打印偶数。

样品清单:

[1, 2, 3, 4, 5, 6, 7, 8, 9] 

代码:

def p_even(lst):
    for num in lst:
        if num %2 == 0:
            return num

我期待列表中的偶数 [2,4,6,8],但只是给我数字 2。

标签: python

解决方案


是的,该代码将返回它找到的第一个偶数,当它完成时停止处理列表。

如果你想要所有的偶数,你可以使用(a)

def p_even(lst):
    #       _____Construct new list_____
    #      /                            \
    return [x for x in lst if x % 2 == 0]
    #       \____________/ \___________/
    # from these elements   that meet this condition

(注释仅用于解释,在您编写的任何实际代码中可能不需要它们)。

这在 Python 中称为列表推导,是一种通过过滤某些元素从列表中创建另一个列表的强大方法(在这种情况下)。

要打印元素,您可以只打印返回的列表本身(下面的第一行)或打印每个元素(for下面的循环):

print(p_even(range(20))
for itm in p_even(range(20)):
    print(itm)

(a)可以为此使用显式循环,例如:

def p_even(lst):
    even_lst = []
    for itm in lst:
        if itm % 2 == 0:
            even_lst.append(itm)

但它并没有真正被认为是“pythonic”。Python 提供了非常有表现力(和简洁)的方法来执行这种操作,并且在我看来,您最好学习它们,因为它们将使您的代码更具可读性和易于维护。


推荐阅读