【问题标题】:How come my code only returns the first element from my list?为什么我的代码只返回列表中的第一个元素?
【发布时间】:2019-05-30 20:48:21
【问题描述】:

为什么当我调用该函数时,我只打印了列表中的第一个元素,但是当我在函数内将“return”替换为“print”然后调用它时,我得到了完整列表?

def show_magicians(magicians):

    for magician in magicians:
        return(magician)

magicians = ["a", "b", "c", "d", "e","f", "g"]
print(show_magicians(magicians))

【问题讨论】:

  • return 在第一次迭代中跳出函数

标签: python list function


【解决方案1】:

print() 函数在控制台中写入,即“打印”一个字符串。 return 语句使你的函数退出并将一个值返回给它的调用者。一般来说,函数的重点是接受输入并返回一些东西。当函数准备好向其调用者返回值时,使用 return 语句。

在第一次迭代中,当代码到达返回时,它会失去功能,因为它只迭代一次

【讨论】:

    【解决方案2】:

    你可以试试这个:

    def show_magicians(magicians):
    
        for magician in magicians:
            yield(magician)
    
    magicians = ["a", "b", "c", "d", "e","f", "g"]
    for mag in show_magicians(magicians):
        print(mag, end=' ')
    

    而不是运行循环并返回第一次迭代,这会将您的代码变成一个生成器,您可以将其放入另一个循环中,如图所示。使用 yield 而不是 return 将返回列表中的每个项目,然后继续下一个项目,然后返回该项目和下一个项目,依此类推。

    以防万一您不知道 print 函数中的 end=' ' 用于在返回每个项目时将其分开。通过将 ' ' 替换为 ',' 或 '\n' 等来玩它以获得不同的结果。您甚至可以将结果附加到新列表并打印出来,就像 sarkamedo 向您展示的那样,但同样,您最终只会得到原始列表的副本。

    【讨论】:

      【解决方案3】:

      您可以通过在函数中创建一个空列表并附加它来实现您的目标。

      像这样:

      def show_magicians(magicians):
      
          new_list = []
          for magician in magicians:
              new_list.append(magician)
      
          return new_list
      
      magicians = ["a", "b", "c", "d", "e","f", "g"]
      print(show_magicians(magicians))
      

      但是您将返回与您的参数具有相同值的列表。

      【讨论】:

        猜你喜欢
        • 2022-06-17
        • 1970-01-01
        • 1970-01-01
        • 2019-06-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多