2011-03-18 41 views
2

我试图根据header_count中的编号创建多个列表。下面的代码应该生成3个列表,但是我得到一个语法错误。Python:根据计数创建多个列表

​​3210
+0

如果你要产生3只列出,这是非常奇怪的设置'header_count'到4最好设置'header_count = 3'和迭代'因为我在的xrange(header_count)'。 – 2011-03-18 23:10:01

回答

10

这是我的你想要什么解释,我希望我猜对(你是不是很清楚)。

header_count = 4 
headers = [[] for i in range(1, header_count)] 

现在你可以使用这样的:

headers[1].append("this goes in the first header") 
headers[2].append("this goes in the second header") 
+0

我试图创建三个单独列出名单。所以我需要header_1,header_2和header_3作为列表 – Harpal 2011-03-18 22:48:39

+0

为什么?这实际上是一个不好的做法。这样你可以使用它作为'header [0]','header [1]','header [2]'。 – orlp 2011-03-18 22:50:04

1

你想要的是创建一个列表的列表:

header_count = 4 
header = [] 
for i in range(header_count): 
    header[i] = [] 

在头变量引用含有4列表名单。每个列表可以访问如下:

header[0].append(1) 
header[1].append("Hi") 
header[2].append(3.14) 
header[3].append(True) 
+0

'header [0] .append(1)'是一个索引异常。 – orlp 2011-03-18 22:59:42

+0

这是行不通的,也许应该是: '为我在范围内(1,header_count): header.append([])' – 2011-03-18 23:12:07

0

你是什么意思header_%s%是mod运算符,当然你不能指定涉及运算符的表达式。这就像写

a+b = c 

您不能分配到a+b,也不能分配给header_%s

您的意思是?

header_lists = [[] for i in range(1,header_count)] 
1

如果需要列表名称(因为它来自于nightcracker回答您的评论似乎),你可以使用列表的字典:

header_count = 4 
listDict = {} 
for i in range(1, header_count): 
    listDict["header_"+str(i)] = [] 

然后你可以使用header_1,header_2查阅字典, header_3作为键。

+0

请不要鼓励不好的做法。 – orlp 2011-03-18 22:59:01

+0

这就是他似乎要求的!人们可以永远不知道,也许是即使它是一个可怕的做法好奇心。 – 2011-03-18 23:03:08

+0

字典是合适的数据结构,如果名称是动态生成的,并有一定的信息内容超出了一个简单的计数器(见回答以下问题[如何,可以任您动态创建变量 - 在 - python的-via-到-A-while循环(http://stackoverflow.com/questions/5036700/how-can-you-dynamically-create-variables-in-python-via-to-a-while-loop))。如果变量的名称是多余的一个简单的计数或索引,那么清单是合适的数据结构。 – JoshAdel 2011-03-19 00:23:53