Python变量列表名in.Append

2024-05-13 22:03:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道这是个坏主意。字典看起来是一种更干净的方式来做我需要做的事情,但我正在寻找一个地方持有人持有的东西,而我想知道如何正确使用字典,我需要。

同时,我有十几个列表,我正试图设置列表名,以便与变量一起使用。

所以通常我会用:

Listname.append("Text")

但在循环的不同迭代中,我希望能够使用一个不同的列表,该列表是从一个更大的字符串中拆分出来的。

类似于:

x1 = []
x2 = []
x3 = []

for y in 1 to 3:
    "x"+y.append("string")

再说一次,我知道这是个坏主意,我正试着去查字典,但这相当于在我这么做的时候用胶带把东西粘在一起。

我想不出一个办法让它工作。它告诉我.append不能处理这个问题(这是我所期望的)。我试着用str()在一个长镜头上转换整件事,但它当然告诉我你没有附加到字符串。

我知道这可能不是你通常想做的事情,如果我真的通过IDE来管理它,会因为我做了愚蠢的事情而对我大喊大叫,但这首先是可能的吗?


Tags: 字符串text列表字典地方方式事情x1
3条回答

字典确实是最好的解决办法。然而,如果你迫切需要一个解决方案,你可以利用^{}

x1 = []
x2 = []
x3 = []

for y in 1 to 3:
    locals()["x"+str(y)].append("string")

这有一个附带的好处,就是以后可以很容易地用dict替换,因为您实际上正在使用类似dict的东西。

不过,老实说,在这种情况下,用dict替换为isn't that hard

我可以想象一些情况会使事情复杂化,尽管:

如果变量在模块范围内,而这在函数中,则还有类似的^{}

如果这些是类或对象的属性,则可以使用^{}

class X(object):
    x1 = []
    x2 = []
    x3 = []

for y in 1 to 3:
    getattr(X, "x"+str(y)).append("string")

class Z(object):
    def __init__(self):
        self.x1 = []
        self.x2 = []
        self.x3 = []

z = Z()
for y in 1 to 3:
    getattr(z, "x"+str(y)).append("string")

把变量放到字典里。列表是通过引用传递的对象之一,因为列表是对复杂对象的引用。因此,如果你把它放在字典中,你仍然可以把它称为x1,但是你也可以把它称为d["x1"],只要你不删除它或者用x1 = []重新初始化它。

my_lists = {}
my_lists["x1"] = x1
my_lists["x2"] = x2
my_lists["x3"] = x3

for y in range(1,4):
    listname = "x" + str(y)
    my_lists[listname].append("string")

你问题的任何答案都比字典本身更难理解。不管怎样,就这样。

如果列表是全局的,则它们存储在内置函数globals()返回的字典中。所以你可以从那本字典里取出这些列表,然后附加到它们上面。

所以你可以:

x1 = []
x2 = []
x3 = []

for y in range(1, 4):
    x = globals()['x' + str(y)]
    x.append("string")

相关问题 更多 >