python - "Return"in Function only Returning Value

标签 python function for-loop printing return

假设我写了一个 for 循环,它将输出所有数字 1 到 x:

x=4
for number in xrange(1,x+1):
    print number,
#Output:
1
2
3
4

现在,将相同的 for 循环放入函数中:

def counter(x):
    for number in xrange(1,x+1):
        return number
print counter(4)
#Output:
1

为什么我把for循环放到一个函数里,只能得到一个值?

我一直在通过将 for 循环的所有结果附加到一个列表,然后返回该列表来回避这个问题。

为什么 for 循环追加所有结果,而不只是一个?:

def counter(x):
    output=[]
    for number in xrange(1,x+1):
        output.append(number)
    return output

返回所有值的最佳方法是什么,附加到列表似乎效率很低。

最佳答案

return 与关键字的名称所暗示的完全一样。当您点击该语句时,它返回并且不执行该函数的其余部分。

您可能需要的是 yield 关键字。这将创建一个生成器函数(一个返回生成器的函数)。生成器是可迭代的。每次执行 yield 表达式时,它们都会“产生”一个元素。

def func():
    for x in range(10):
        yield x

generator = func()
for item in generator:
    print item

关于python - "Return"in Function only Returning Value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20604773/

相关文章:

python - 为什么 Pip 会忽略冲突的依赖项?

python - Pandas Dataframe 和 Series join 返回空 Dataframe 或 NaN 列

php - 从 JavaScript 运行 PHP 类

linux - 复制包含单词但不包含其他单词的文件。/grep 不使用 for 循环

java - 循环中是否存在ConcurrentModificationException

python - 对 Python 字节类型感到困惑

python - 在 python 函数中使用可选参数

mysql - 如何使用mysql用户定义函数生成高斯分布

c++ - 我正在尝试制作一个在 C++ 中初始化二维数组的函数

php - 在for循环中向表中插入数据