其他分享
首页 > 其他分享> > 如何在不中断循环的情况下返回值?

如何在不中断循环的情况下返回值?

作者:互联网

我想知道如何在不破坏Python循环的情况下返回值.

这是一个例子:

def myfunction():
    list = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
    print(list)
    total = 0
    for i in list:
        if total < 6:
            return i  #get first element then it breaks
            total += 1
        else:
            break

myfunction()

return只会得到第一个答案,然后离开循环,我不想那样,我想返回多个元素直到循环结束.

如何解决这个问题,有什么解决办法吗?

解决方法:

您可以为此创建一个generator,这样就可以从生成器中产生值(使用yield语句后,您的函数将成为生成器).

请参阅以下主题,以更好地了解如何使用它:

> Generators
> What does the “yield” keyword do in Python?
> yield and Generators explain’s

使用生成器的示例:

def simple_generator(n):
    i = 0
    while i < n:
        yield i
        i += 1

my_simple_gen = simple_generator(3) // Create a generator
first_return = my_simple_gen.next() // 0
second_return = my_simple_gen.next() // 1

另外,您可以在循环开始之前创建一个列表,然后将项目追加到该列表中,然后返回该列表,因此可以将此列表视为循环内“返回”的结果列表.

使用列表返回值的示例:

def get_results_list(n):
    results = []
    i = 0
    while i < n:
        results.append(i)
        i += 1
    return results


first_return, second_return, third_return = get_results_list(3)

注意:在使用列表的方法中,您必须知道函数将在结果列表中返回多少个值,以避免太多的值导致解包错误

标签:python,function,return-value
来源: https://codeday.me/bug/20191012/1897764.html