打印给定列表中的偶数

时间:2019-04-12 00:27:25

标签: python

我从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。

6 个答案:

答案 0 :(得分:2)

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

如果需要所有偶数,则可以使用(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提供了非常富有表现力(简洁)的方式来执行这种操作,我认为,最好学习它们,因为它们会使您的代码更易读和易于维护。

答案 1 :(得分:2)

这将完成工作:

def p_even(lst):
    return [x for x in lst if not x % 2]

这是一些测试:

>> def p_even(lst):
...     return [x for x in lst if not x % 2]
... 
>>> p_even(range(100))
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98]
>>> p_even(range(50))
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48]
>>> p_even(range(103,120))
[104, 106, 108, 110, 112, 114, 116, 118]
>>> 

这是使用生成器的另一种方式:

def p_even(lst):
    for x in lst:
        if not x % 2:
            yield x

以及相应的用法:

>>> def p_even(lst):
...     for x in lst:
...         if not x % 2:
...             yield x
... 
>>> p_even(range(10))
<generator object p_even at 0x7fe0ff77e840>
>>> list(p_even(range(10)))
[0, 2, 4, 6, 8]
>>> 

答案 2 :(得分:0)

您的return语句应与缩进级别相同。 另外,您需要保存此列表并返回所有偶数(如果您要这样做)。 (另外,假设您想使用循环方法来执行此操作,否则有更多方法可以解决问题。)

def p_even(lst):
    ret_list = []
    for num in lst:
        if num %2 == 0:
            ret_list.append(num)
     return ret_list

答案 3 :(得分:0)

您可以通过列表理解来做到这一点,例如:

list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
list2 = [x for x in list1 if x % 2 == 0]
print(list2)

屈服:

[2, 4, 6, 8]

如果要将其抽象为一个函数,它将更像:

list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
def get_evens(input_list):
    output = [x for x in input_list if x % 2 == 0]
    return output
print(get_evens(list1))

达到相同的结果!

答案 4 :(得分:0)

您需要在p_even()中声明一个列表。在for循环中,将遇到的所有偶数添加到列表中。最后, for循环之外,将列表返回。

def p_even(lst):
    even_num = []
    for num in lst:
        if num %2 == 0:
            even_num.append(num)
    return even_num

一个较短的解决方案(对于刚接触python的新python程序员可能会有些困难):

def p_even(lst):
    return [x for x in lst if x % 2 == 0]

此代码本质上返回一个包含x中每个值lst的列表,其中x % 2 == 0x是偶数。

以上两种方法都适用于[1, 2, 3, 4, 5, 6, 7, 8, 9]之类的列表,返回[2, 4, 6, 8]

答案 5 :(得分:0)

list1 = [1, 2, 3, 4, 5, 6, 7, 8, ] 
for num in list1: 
    if num % 2 == 0: 
         print(num, end = " ")