我在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
有某种方法可以做到吗?也许通过使用一个类?
答案 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
您不能以尝试的方式在字符串和列表创建之间混用。