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)+"=[]
现在,我有 list1、list2、... list9
然后,我想通过从不同元素开始读取 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
有什么方法可以做到吗?也许通过使用一个类?
解决方案
对于您的问题,我建议使用字典。字典是 python 中的一种数据结构,允许存储信息对 - 例如列表及其名称。这样,您可以创建 n 个单独的命名列表,将它们全部存储在一个字典中,并根据需要附加它们。为了从不同的索引开始,我使用了模运算符。
这应该可以解决问题:
# 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会将指针保存到堆栈内存中的特定位置。但是,您在循环中,因此在循环的每次迭代中都会覆盖“命令”,并且旧指针会丢失。
以下行:
command="list"+str(j)+"=[]
在 Python 中无效。使用方括号创建列表的语法是:
variable = [item1, item2, item3] # or variable = [] for an empty list
您不能以您尝试的方式混合字符串和列表创建。
推荐阅读
- windows - 即使在管理员帐户下,PowerShell USMT 错误 26 也无法访问 Windows 文件
- python - Python 3 - 嵌套循环
- python - 如何使用python制作行星的轨道
- python - 在python中删除变量后如何释放内存?
- ios - Xcode 10.2.1 不支持 ios 12.3.1 用于部署/测试目的?
- kotlin - 对 kotlin 中的小型私有函数使用 inline 关键字?
- ios - UIView 功能错误
- python - Ansible + Ubuntu 18.04 + MySQL =“需要 PyMySQL(Python 2.7 和 Python 3.X)或 MySQL-python(Python 2.X)模块。”
- windows - 网络:无法解析 Kubernetes 参数:pod 没有标签 vpc.amazonaws.com/PrivateIPv4Address
- swift - 过渡到 UITabBarController