为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

汪汪一只猫 2023-09-19 17:36:37
我这里有这个代码: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。除了将两个列表设为全局变量之外,还有其他方法吗?
查看完整描述

2 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

每次调用该函数时,您都会创建新的空列表。该函数应将列表作为参数并修改它们。


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)

然而,将相关数据保存在单独的列表中通常是糟糕的设计,您必须保持同步。最好使用单个字典或元组列表,这样所有相关项(例如单词及其定义)都放在一起。


查看完整回答
反对 回复 2023-09-19
?
莫回无

TA贡献1865条经验 获得超7个赞

当您附加到列表时,您将其分配给新变量 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)


查看完整回答
反对 回复 2023-09-19
  • 2 回答
  • 0 关注
  • 55 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信