为什么我的代码只返回列表中的第一个元素?

时间:2019-05-30 20:48:21

标签: python list function

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

def show_magicians(magicians):

    for magician in magicians:
        return(magician)

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

3 个答案:

答案 0 :(得分:1)

print()函数在控制台中写入一个字符串,即“ prints”。 return语句使您的函数退出并将值返回给其调用者。通常,功能的重点是接受输入并返回某些内容。当函数准备向其调用者返回值时,将使用return语句。

在第一次迭代中,当代码到达返回时,它会失效,因为它仅迭代一次

答案 1 :(得分:1)

您可以通过在函数内部创建一个空列表并将其附加来实现目标。

像这样:

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))

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

答案 2 :(得分:1)

您可以尝试以下方法:

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将返回列表中的每个项目,然后继续到下一个项目,然后返回该项目和下一个项目,依此类推。

以防万一,在打印功能中您不知道end =''是用来分隔返回的每个项目的原因。通过将''替换为','或'\ n'等来获得不同的结果,进行播放。您甚至可以将结果添加到新列表中,然后进行打印,就像sarkamedo向您显示的那样,但是同样,您将得到原始列表的副本。