我从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。
答案 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 == 0
; x
是偶数。
以上两种方法都适用于[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 = " ")