附加列表以迭代方式调用

时间:2018-12-20 09:01:40

标签: python-3.x

我在Python 3.6中的代码有一个简单的问题。

我正在读取csv并将int值存储在名为Total的列表中。 我要求Python用户输入数字n =。(在本例中为n = 9)。 我使用以下命令创建n(9)个空列表:

for j in range (1,n+1):
    command=""
    command="list"+str(j)+"=[]

现在,我有列表1,列表2,...列表9

然后,我想通过从不同元素开始读取Total并读取每个n(9)个元素来附加这些列表。

例如:

list1=[Tot[0],Tot[8]...] list2=[Tot[1],Tot[9],...]

为此,我想要类似

for k in range (0,n):
    for a in range (0+k,len(Total),n):
        listk.append(Total[a])

我的问题在这里,Python无法识别listk中的整数,例如:

list1, ... list9

有某种方法可以做到吗?也许通过使用一个类?

1 个答案:

答案 0 :(得分:1)

对于您的问题,我建议使用dictionary。字典是python中的一种数据结构,它可以存储信息对,例如列表及其名称。这样,您可以创建n个单独的命名列表,将它们全部存储在一个字典中,并根据需要追加它们。首先从不同的索引开始,我使用modulo运算符。

这应该可以解决问题:

# shorthand syntax for creating a dictionary with n empty lists: list1,...,listn
    lists = {"list" + str(i + 1): [] for i in range(n)}
    for k in range(n):
        list = lists.get("list" + str(k + 1))
        for j in range(n):
            list.append(Total[(j + k) % n])

一些旁注:

似乎您对Python语法有一些误解。当在循环中声明变量“ command”时,Python将 pointer 保存到堆栈内存中的特定位置。但是,由于您处于循环内,因此在循环的每次迭代中都会覆盖“命令”,并且旧指针会丢失。

以下行:

command="list"+str(j)+"=[]

在Python中无效。使用方括号创建列表的语法为:

variable = [item1, item2, item3] # or variable = [] for an empty list

您不能以尝试的方式在字符串和列表创建之间混用。