我在这里有这个代码:
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
转换为全局变量来避免这个问题。除了把这两个列表变成全局变量之外,还有其他方法吗?
谢谢!
每次调用函数时都会创建新的空列表。函数应将列表作为参数并对其进行修改。
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,但您永远不会对这些变量做任何操作。CCD_ 5和CCD_。实际上,您不必将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)