python - Python函数返回列表
问题描述
Python新手在这里。我编写了这个函数,只返回偶数作为一个列表,但我没有这样做。你能帮忙吗?这是我的初始函数,它工作正常,但结果没有作为列表出现:
def myfunc (*args):
for num in args:
if num % 2 == 0:
print (num)
例如,当您使用以下参数调用该函数时:
myfunc(1,2,3,4,5,6,7,8,9,10)
我正进入(状态:
2
4
6
8
10
但我需要那些在列表中,我错过了什么?这也不起作用:
list = []
def myfunc (*args):
for num in args:
if num % 2 == 0:
print (list[num])
非常感激!
解决方案
你的函数没有返回任何东西。您可能希望通过以下方式获取元素
def myfunc (*args):
for num in args:
if num % 2 == 0:
yield num
或者创建一个临时列表:
def myfunc (*args):
lst = []
for num in args:
if num % 2 == 0:
lst.append(num)
return lst
您可以在 REPL 中检查您的返回值:
>> type(print(num)) # print() returns None
NoneType
说明:简而言之,yield
每次迭代函数时返回一个元素 - 并且只返回一个元素一次。因此该函数也称为“生成器”。有一篇关于yield
. 我无法比它更好地解释。
更新:不要list
用作变量名,list
是一个内置方法。
推荐阅读
- python - 在python中的数组的子数组中附加值
- c# - 通过 Razor 页面传递多个参数值
- vue.js - 如何在 Vue 自定义中间件中获取 Vuex 更新的 getters 值以进行权限检查?
- scala - 如何根据字符数解析字符串?
- reactjs - SyntaxError: Unexpected identifier import React from 'react'
- c# - 奇怪的字符串排序
- html - 尝试为网格内的水平菜单创建子菜单
- xslt-1.0 - 如何从子标签中删除命名空间
- python - Dramatiq 不会将任务添加到队列中
- python - 查找出现次数最多的标签的父标签 - BeautifulSoup 4