在python中,创建名称中包含变量的列表

在python中,创建名称中包含变量的列表,python,list,for-loop,Python,List,For Loop,我试图在python中使用for循环生成一系列(空)列表,我希望列表的名称包含一个变量。e、 g.y0、y1、y2等。理想情况下看起来像这样: for a in range (0,16777216): global y(a)=[] 不确定这是否正是您想要的,但您不能通过简单地创建列表来模拟相同的行为吗?那么你的列表[0]将对应于y0你为什么不做一个列表字典呢 y = {} for a in range (0,16777216): y[a] = [] 为了简洁起见: 答案是:不要。相反

我试图在python中使用for循环生成一系列(空)列表,我希望列表的名称包含一个变量。e、 g.y0、y1、y2等。理想情况下看起来像这样:

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

不确定这是否正是您想要的,但您不能通过简单地创建列表来模拟相同的行为吗?那么
你的列表[0]
将对应于
y0

你为什么不做一个列表字典呢

y = {}
for a in range (0,16777216):
    y[a] = []
为了简洁起见:


答案是:不要。相反,创建一个列表,以便使用
y[0]
y[1]
等访问变量。有关信息,请参阅。

也许您应该签出defaultdict

form collection import defaultdict

# This will lazily create lists on demand
y = defaultdict(list)
另外,如果您想在键上设置约束,请覆盖默认的
\uuu getitem\uuu
函数,如下所示

def __getitem__(self, item):
    if isintance(item, int) and 0 < item < 16777216:
         return defaultdict.__getitem__(self, item)
    else:
         raise KeyError
def\uuuu getitem\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
如果存在(项目,内部)和0<项目<16777216:
返回defaultdict.\uuuu getitem\uuuu(self,item)
其他:
上升键错误

您不想这样做。查看答案了解实际操作。创建不立即使用的空数据结构是不符合语法的。Python能够进行惰性计算,特别是在其迭代数据结构中。好好利用这一点!我的最终意图是通过创建一组列表作为y值,位置作为x值来伪造一个表。必须使用另一个列表似乎有点笨拙。@schwal:我想大多数Python程序员都会认为你完全颠倒了这一点。如果您使用的是
dict
或列表列表,那么这就是您的表——不需要伪造。事实上,您想要创建的局部变量只会存在于它们自己的
locals()
字典中。所以在后台,你会使用相同的数据结构,只是不太方便,这没有多大意义。@schwal:将数据放在变量的名称中是很困难的。除了所有的键都是整数,所以可能是列表列表或稀疏数组?我输入了a,它不应该是字符串。已修复。添加了dict理解您应该将此问题标记为与链接问题的重复项。
def __getitem__(self, item):
    if isintance(item, int) and 0 < item < 16777216:
         return defaultdict.__getitem__(self, item)
    else:
         raise KeyError