【问题标题】:Several returns in Python [duplicate]Python中的几个返回[重复]
【发布时间】:2021-08-21 05:57:08
【问题描述】:

我是 python 新手,我想在一个函数的循环中使用多个返回并获取一个列表,但我只得到一个项目,其余代码没有执行。如何做到这一点?

import random

def MyFunction():
    for i in range(5):
        return random.randint(100)

print(MyFunction())

【问题讨论】:

  • 一个函数只能有一个返回值。如果你想返回一个列表,那么你需要建立一个列表,然后返回它。

标签: python


【解决方案1】:

你甚至可以尝试:

import random
def MyFunction():
    yield from random.sample(range(100), 5)

for random_number in MyFunction():
    print(random_number)

或者:

import random
def MyFunction():
    return random.sample(range(100), 5)

for random_number in MyFunction():
    print(random_number)

【讨论】:

    【解决方案2】:

    这是因为函数执行在return 语句之后立即停止,即您编写的函数将在第一次迭代时返回值,即 i=0,然后停止。您可以制作一个生成器,也可以返回一个序列。

    def MyFunction():
        result = []  #<--- Create a list to hold values
        for i in range(5):
            result.append(random.randint(0,100))   #<--- Append the values to the list
        return result  #<---- return the list
    
    print(MyFunction())
    [29, 76, 0, 7, 94]
    

    附带说明,random.randint(100) 将抛出 TypeError,因为它需要两个值:下限和上限。

    【讨论】:

      【解决方案3】:

      一旦一个函数在 python 中返回,它就不再被执行。所以返回的第一项,就是函数的返回值。因此,如果你想返回一个列表,然后返回一个列表。这可以按如下方式完成:

      import random
      
      def MyFunction():
          result = []
          for i in range(5):
              v = random.randint(100)
              result.append(v)
      
          return result
      
      print(MyFunction())
      

      【讨论】:

        【解决方案4】:

        你的答案是:

        import random
        stack = []
        def MyFunction():
            for i in range(5):
                r1 = random.randint(0,10)
                stack.append(r1)
            return stack
        print(MyFunction())
        

        结果:

        [4, 0, 7, 4, 10]
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-01-18
          • 2016-01-12
          • 2023-02-20
          • 1970-01-01
          • 2017-01-07
          • 2014-09-12
          • 2020-02-20
          • 2014-04-11
          相关资源
          最近更新 更多