使变量成为列表的名称?python
我希望放入这个函数的每个变量都成为它自己列表的名称使变量成为列表的名称?python,python,list,variables,Python,List,Variables,我希望放入这个函数的每个变量都成为它自己列表的名称 def listy(x, insert): listend = isinstance(x, list) if listend: x.append(insert) else: x = [] x.append(insert) print(x) listy("xyz", "neutral") listy("xyz&quo
def listy(x, insert):
listend = isinstance(x, list)
if listend:
x.append(insert)
else:
x = []
x.append(insert)
print(x)
listy("xyz", "neutral")
listy("xyz", "happy")
但是,当我这样做时,它会覆盖上一个列表(最后列表的标题是“happy”,而不是“neutral”,“happy”)。如果该单词已经是列表的名称,我如何将其添加到列表中?对于您给出的示例,这是有效的。它使用字典
def listy(x, insert):
varName[x].append(insert)
return varName
varName = {"xyz":[]}
x = listy("xyz", "neutral")
y=listy("xyz", "happy")
print(y)
它将覆盖上一个列表
上一个列表不会被覆盖。在函数listy
中创建的列表由垃圾收集器自动销毁。您只需在第二个函数调用listy(“xyz”,“happy”)
中创建一个新的临时列表,它将再次被解除启动。您需要在全局上下文中放置x
您可以通过以下方式重写函数:
def listy(x, insert):
listend = isinstance(x, list)
if listend:
x.append(insert)
else:
x = []
x.append(insert)
print(x)
return x
x = listy("xyz", "neutral")
x = listy(x, "happy")
您似乎对引用和对象感到困惑。在python中,一切都是对象。像
x
这样的名称只是对对象的引用。第二次函数调用中的x
无法引用第一次函数调用中创建和销毁的[“中立”]
。isinstance没有将其转换为列表。它返回一个布尔值。然后创建名为x的列表,因为它返回False,然后追加insert。是否要在全局上下文中创建变量xyz
?字典。这就是字典的用途。@Buddybobii很有意义。我试图反转if/else,但是现在我得到了一个没有列表的str的AttributeError