python - 避免在 for 循环之前声明列表
问题描述
我有以下代码:
results["date"] = []
results["x"] = []
results["y"] = []
results["z"] = []
results["t"] = []
for pv in list(pvlist):
results["date"].append(pv.date)
results["x"].append(pv.x)
results["y"].append(pv.y)
results["z"].append(pv.z)
results["t"].append(pv.t)
我想遍历我所有的 pv 并将数据添加到我的端点的输出中。像这样的代码看起来非常难看..有更好的选择吗?
解决方案
您可以执行以下操作:
for pv in pvlist: # pvlist is an iterable already
for key in ("date", "x", "y", "z", "t"):
results.setdefault(key, []).append(getattr(pv, key))
这应该替换您发布的整个代码段。它通过将 5 个键/属性中的每一个置于循环中来替换重复代码,并在需要时根据需要懒惰地创建空列表。
推荐阅读
- php - 使用 PHP 数组输出 MySQL 查询 - foreach 循环错误“非法偏移”和“无效参数”
- sqlite - 如何在 Xamarin XAML 中对 Sqlite DB 进行原始查询
- selenium - 当他单击硒中的“返回顶部”按钮时如何验证用户已滚动到顶部
- python - 了解 Python 中的对象类型
- python - 如何从这些数据创建函数?
- c# - 在 c# 中保存/加载 HttpClient 的“浏览器”会话
- java - 休眠条件.setFetchSize 不起作用
- r - 什么是用于 k-means 初始化的 NbClust 方法?
- mysql - 错误 2002 (HY000): 无法通过 ubuntu 服务器中的套接字“/var/run/mysqld/mysqld.sock”连接到本地 MySQL 服务器
- swift - Swift 中的计算属性和存储值属性有什么区别?