Python:函数中的返回列表问题
如果我用打印函数这样做
def numberList(items):
number = 1
for item in items:
print(number, item)
number = number + 1
numberList(['red', 'orange', 'yellow', 'green'])
我得到的是这个
1 red
2 orange
3 yellow
4 green
如果我把打印函数换成返回函数,我只得到这个:
(1, 'red')
为什么会这样呢?
我希望返回函数能和打印函数一样工作,我需要在代码上做什么改变或者重写...谢谢...请尽量让你的回答简单易懂,直接明了..谢谢
3 个回答
0
当函数遇到“return”这个语句时,它会立即停止执行后面的代码,并退出这个函数。所以它只返回第一个值。你不能在一个函数里返回多次。
1
一个 return
函数在第一次被调用时会返回一个值,然后就结束了,不会像你在循环中使用的 print
函数那样继续运行。
参考文档: http://docs.python.org/reference/simple_stmts.html#grammar-token-return_stmt
你想要实现什么呢?
你可以返回一个包含以下内容的 dict
:
{'1':'red','2':'orange','3':'yellow','4':'green'}
这样所有的元素都能保存在一个返回值里。
8
return
是用来结束一个函数的,而 yield
则是用来创建一个生成器,它一次输出一个值:
def numberList(items):
number = 1
for item in items:
yield str((number, item))
number = number + 1
item_lines = '\n'.join(numberList(['red', 'orange', 'yellow', 'green']))
另外,你也可以用 return
返回一个列表:
def numberList(items):
indexeditems = []
number = 1
for item in items:
indexeditems.append(str((number, item)))
number = number + 1
return indexeditems
item_lines = '\n'.join(numberList(['red', 'orange', 'yellow', 'green']))
或者直接使用 enumerate
:
item_lines = '\n'.join(str(x) for x in enumerate(['red', 'orange', 'yellow', 'green'], 1)))
无论如何,'\n'.join(str(x) for x in iterable)
是把像列表这样的东西,里面的每个项目都变成字符串,就像 print
一样,然后把这些字符串用换行符连接起来,就像多个 print
语句那样。