[英]Print the even numbers from a given list
我从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。
是的,该代码将返回找到的第一个偶数,当这样做时将停止对列表的处理。
如果需要所有偶数,则可以使用(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提供了非常富有表现力(简洁)的方式来执行此类操作,我认为,学习它们会更好,因为它们会使您的代码更具可读性且易于维护。
这将完成工作:
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]
>>>
您的return语句应与缩进级别相同。 另外,您需要保存此列表并返回所有偶数(如果您要这样做)。 (还假设您想使用循环方法来完成此操作,否则,有更多方法可以解决问题。)
def p_even(lst):
ret_list = []
for num in lst:
if num %2 == 0:
ret_list.append(num)
return ret_list
您可以通过列表理解来做到这一点,例如:
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))
达到相同的结果!
您需要在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程序员来说,乍一看可能会更难一些):
def p_even(lst):
return [x for x in lst if x % 2 == 0]
该代码实质上返回一个列表,其中包含lst
中每个值x
,其中x % 2 == 0
; x
是偶数。
上面的两种方法都适用于[1, 2, 3, 4, 5, 6, 7, 8, 9]
,返回[2, 4, 6, 8]
。
list1 = [1, 2, 3, 4, 5, 6, 7, 8, ]
for num in list1:
if num % 2 == 0:
print(num, end = " ")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.