def list_num_checker(num_list):
for x in num_list:
if x%2==0:
return x
else:
continue
我剛開始學習 Python,這是我撰寫的代碼,用于創建一個函式來回傳串列中的所有偶數值。但是,在檢查第一個偶數后它會崩潰。例如
list_num_checker([1,2,3,4,5,6])
2
任何和所有的幫助表示贊賞。
uj5u.com熱心網友回復:
return 將導致一個函式退出...如果你使用 yield 你可以使它成為一個生成器
def list_num_checker(num_list):
for x in num_list:
if x%2==0:
yield x # yield makes this a generator instead
# else: # you don need the else
# continue
for evennum in list_num_checker([1,2,3,4,5,6,7,8]):
print(evennum)
你也可以做一個串列理解
print([x for x in num_list if x%2 == 0])
或者您可以使用內置過濾器功能
def is_even(num):
return num % 2 == 0
list(filter(is_even,num_list)) # its a generator so you need to call list on it
uj5u.com熱心網友回復:
我認為你可以使用yield而不是return因為return會打破for回圈并立即回傳給定值
def list_num_checker(num_list):
for x in num_list:
if x%2==0:
yield x
else:
continue
divisible2 = list(list_num_checker([1,2,3,4,5,6]))
一些可能的替代方法是使用串列理解或 filter
def list_num_checker(num_list):
return [x for x in num_list if x % 2 == 0]
def list_num_checker(num_list):
return filter(lambda x: x % 2 == 0, num_list)
uj5u.com熱心網友回復:
return將立即終止該功能。要在一個函式中生成多個值,請yield改用。
def list_num_checker(num_list):
for x in num_list:
if x%2==0:
yield x
else:
continue
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/311504.html
上一篇:串列理解中的不變變數
下一篇:如何找到資料幀的頂部任意百分比?
