在python中创建一个名称中带有变量的列表

In python create a list with a variable in the name

本问题已经有最佳答案,请猛点这里访问。

我尝试使用Python中的for循环生成一系列(空)列表,我希望列表的名称包含一个变量。例如,y0、y1、y2等。理想情况下看起来如下:

1
2
for a in range (0,16777216):
global y(a)=[]


你为什么不做一本列表词典?

1
2
3
y = {}
for a in range (0,16777216):
    y[a] = []

也为了简洁起见:https://stackoverflow.com/a/1747827/884453

1
y = {a : [] for a in range(0,16777216)}


不确定这是否完全是你想要的,但是你不能通过简单地创建一个列表来模仿相同的行为吗?因此,your_list[0]y0相对应。


也许你应该查一下DefaultDict

1
2
3
4
form collection import defaultdict

# This will lazily create lists on demand
y = defaultdict(list)

另外,如果您希望对键进行约束,则重写默认的__getitem__函数,如下所示…

1
2
3
4
5
def __getitem__(self, item):
    if isintance(item, int) and 0 < item < 16777216:
         return defaultdict.__getitem__(self, item)
    else:
         raise KeyError

答案是:不要这样做,而是创建一个列表,以便您使用y[0]y[1]等访问变量。有关信息,请参阅此处接受的答案。