Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将元素添加到已经存在的元素中,而不是在列表中覆盖它们?_Python_List_Input_Global Variables - Fatal编程技术网

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

Python 如何将元素添加到已经存在的元素中,而不是在列表中覆盖它们?,python,list,input,global-variables,Python,List,Input,Global Variables,我这里有这个代码: 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: ", w

我这里有这个代码:

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
转换为全局变量,我避免了这个问题。除了将这两个列表变成全局变量,还有其他方法吗


谢谢

当您将其附加到列表中时,您会将其分配给新变量x和y,但您从未对这些变量执行任何操作<代码>工作和
定义
永不更改。实际上,您不必将
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)

当您附加到列表中时,您会将其分配给新变量x和y,但您从未对这些变量执行任何操作<代码>工作和
定义
永不更改。实际上,您不必将
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)

每次调用函数时都会创建新的空列表。函数应将列表作为参数并对其进行修改

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)

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

每次调用函数时,都会创建新的空列表。函数应将列表作为参数并对其进行修改

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)

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

def是python关键字,不要将其用作变量名。def是python关键字,不要将其用作变量名。def是python关键字,不要将其用作变量名,不要将其用作变量名。在本例中,它不是
word\u count
,类似于
range
。是否可以不让用户决定输入多少单词?而且
word_list
def_list
不被认为是全局变量吗?我不明白你的第一个问题。用户决定输入多少单词。它们输入计数,然后使用
range()
进行多次迭代。是的,
word\u list
def\u list
都是全局变量,但
alist()
并不局限于这些变量。因此,您可以有一对英语变量,另一对西班牙语变量,等等。
而True:if input(“您想输入另一个单词吗?”)==“no”:break…
您可以使用带有类变量的类。在这种情况下,
word\u count
range
类似。是否可以不让用户决定输入多少单词?而且
word_list
def_list
不被认为是全局变量吗?我不明白你的第一个问题。用户决定输入多少单词。它们输入计数,然后使用
range()
进行多次迭代。是的,
word\u list
def\u list
都是全局变量,但
alist()
并不局限于这些变量。所以你可以有一对英语变量,另一对西班牙语变量,等等。如果为True:if-input(“你想输入另一个单词吗?”)==“no”:break…你可以使用一个带有类变量的类。然而,这是我在开始时使用的,我正在寻找一种不同的解决方案,而不是将本例中的
l1
l2
置于函数范围之外。我不完全清楚您为什么反对在函数之外定义它们,因为您标记为已接受的答案正是这样做的,但是我想一种方法是添加一个if语句来查看列表是否包含项,如果不包含项,则将列表创建为空列表,我正在寻找一种不同的解决方案,而不是将本例中的
l1
l2
置于函数范围之外。我不完全清楚您为什么反对在函数之外定义它们,因为您标记为已接受的答案正是这样做的,但我认为一种方法是添加一个if语句,查看列表是否包含项,如果不包含项,则将列表创建为空列表。