使用for循环追加到列表时获取MemoryError

2024-06-11 15:25:47 发布

您现在位置:Python中文网/ 问答频道 /正文

def show_magicians(magicians_list):
    """Print the name of each magician in a list."""
    for magician in magicians_list:
        print(magician.title())

def make_great(magicians_list):
    """Make each magician great again."""
    for magician in magicians_list:
        magician = magician + " " + "the Great"
        magicians_list.append(magician)

list_of_dudes = ['houdini','david blaine','jebus']

make_great(list_of_dudes)

show_magicians(list_of_dudes)

print(list_of_dudes)

为什么第二个功能不起作用?我试着把名单上的每个魔术师都改成“[魔术师]伟大的”,但我一直有一个记忆错误。有什么建议吗

谢谢,, -困惑的n00b


Tags: oftheinformakedefshowlist
1条回答
网友
1楼 · 发布于 2024-06-11 15:25:47

你不应该附加到列表中,你应该用它的“伟大”版本替换每个元素

def make_great(magicians_list):
    """Make each magician great again."""
    for i, magician in enumerate(magicians_list):
        magician = magician + " " + "the Great"
        magicians_list[i] = magician

您的版本正在添加到它正在迭代的列表中。因此,它永远不会结束,因为它会继续迭代新元素,使它们变得更大(houdini the Great the Great),然后迭代这些元素(houdini the Great the Great the Great),依此类推,直到内存耗尽

相关问题 更多 >