开发者

Python: Creating a number of lists depending on the count

Im trying to create a number of lists depending on the number in my header_count. The co开发者_C百科de below should generate 3 lists but i get a syntax error instead.

header_count = 4
for i in range(1, header_count):
    header_%s = [] % i


This is my interpretation of what you want, I hope I guessed it right (you weren't very clear).

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

Now you can use it like this:

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


What you want is to to create a list of lists:

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

In the header variable references a list containing 4 lists. Each list can be accessed as follow:

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


If you need list names (as it seems from your comment to nightcracker answer), you can use a dictionary of lists:

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

Then you can access the dictionary using header_1, header_2, header_3 as keys.


What did you mean by header_%s? % is the mod operator, of course you can't assign to an expression involving an operator. It's like writing

a+b = c

You can't assign to a+b, nor can you assign to header_%s.

Did you mean this?

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


You can use global() to create these variables:

header_count = 4
for i in range(1, header_count):
    globals()[f"header_{i}"] = []

Note: you started your range with value 1, so you will create three empty lists:

header_1
header_2
header_3
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜