2012-08-30 137 views
1

我想在python中使用for循环生成一系列(空)列表,并且我希望列表的名称包含一个变量。例如Y0,Y1,Y2等理想情况下看起来像这样:在python中创建一个名称与变量的名称

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

你不想做那。请参阅实际做法的答案。 –

+2

创建空的数据结构,你不会立即使用unpythonic。 Python能够进行懒惰评估,尤其是在其迭代数据结构中。利用这一点! – kojiro

+0

我最后的意图是通过创建一堆列表作为y值和位置作为x值来伪造表格。不得不使用另一个列表似乎有点kludgey。 – schwal

回答

7

不知道这是相当你想要什么,但不能您只需创建一个列表的列表模拟相同的行为?所以your_list[0]将对应于y0

7

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

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

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

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

除了所有的键都是整数,所以也许列表或稀疏数组? – kojiro

+0

我错过了一个,它不应该是一个字符串。固定。 –

+0

添加了词典理解 –

2

答案是:没有。请创建一个列表,以便您通过y[0]y[1]等访问变量。有关信息,请参阅the accepted answer here

+0

您应该将此问题标记为与您链接的问题重复。 –

0

也许你应该还检查了defaultdict

form collection import defaultdict 

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

,如果你想在关键覆盖约束默认__getitem__功能类似下面的...

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