如何将元素添加到已存在的元素而不是覆盖列表中的它们?

我这里有这个代码:


def alist():

    wor = []

    definition = []

    wele = str(input("Enter a word: "))

    dele = str(input("Enter a definition: "))

    x = wor.append(wele)

    y = def.append(dele)

    print("Words' List: ", wor, "\nDefinitions' List: ", definition)

每当我运行它时,我都可以将元素添加到列表中,wor但是def,每当我再次运行它时,它都会覆盖我之前第一次运行它时添加的元素。wor我通过将和转换为全局变量来避免这个问题def。除了将两个列表设为全局变量之外,还有其他方法吗?


汪汪一只猫
浏览 56回答 2
2回答

至尊宝的传说

每次调用该函数时,您都会创建新的空列表。该函数应将列表作为参数并修改它们。def alist(wlist, dlist):    wele = input("Enter a word: ")    dele = input("Enter a definition: ")    wlist.append(wele)    dlist.append(dele)word_list = []def_list = []word_count = int(input("How many words are you defining? "))for _ in range(word_count):    alist(word_list, def_list)print("Words' List: ", word_list, "\nDefinitions' List: ", def_list)设置列表参数允许您拥有多个单词列表,例如spanish_words = []spanish_defs = []alist(spanish_words, spanish_defs)然而,将相关数据保存在单独的列表中通常是糟糕的设计,您必须保持同步。最好使用单个字典或元组列表,这样所有相关项(例如单词及其定义)都放在一起。

莫回无

当您附加到列表时,您将其分配给新变量 x 和 y,但您永远不会对这些变量执行任何操作。wor并且def永远不会改变。实际上,您不必分配append()给新变量,它会就地发生。如果您希望两个列表在每次调用函数时始终保留它们所包含内容的内存,那么您应该在函数范围之外定义它们,否则每次调用函数时都会将它们重新启动为空列表。l1 = []l2 = []def alist():     wele = str(input("Enter a word: "))     dele = str(input("Enter a definition: "))     l1.appnd(wele)     l2.append(dele)     print("Words' List: ", l1, "\nDefinitions' List: ", l2)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python