python - 什么是单一参考的有效容器?
问题描述
我有一个包含任意统一类型对象的列表:
items = ['a', 'b', 'c', 'x', 'y', 'z']
我正在浏览列表并通过根据一些不重要的条件将它们放置在容器中来标记对象。假设它是奇数指数:
for i in range(len(items)):
if i % 2:
items[i] = (items[i],)
第二遍将过滤列表以打开标记的项目并删除其他所有内容:
items = [x[0] for x in items if isinstance(x, tuple)]
这段代码基本上是功能性的。但是,对于非常大的数组,标记会增加内存使用量并且自然需要时间。
对于这样的事情,最有效的容器是什么?我使用元组是因为它在我查看的所有容器类中占用空间最小。有没有更好的方法来包装单个引用?
解决方案
我建议使用布尔列表或元组进行标记。如果需要,您可以将其压缩为位图。
flag = [i%2 for i in range(len(items))]
在第二遍中提取所需的元素items
:
new_items = [x for x, wanted in zip(items, flag) if wanted]
这会让你前进吗?
推荐阅读
- java - 错误:链接引用失败(Android Studio)
- mysql - 什么是 TYPO3 参考索引,为什么它会包含过时的值?
- android - 运行“应用程序”时出错:未找到默认活动
- python - 为什么 numpy ndarray 的 insert 和 append 会返回一个新数组而不是修改原始数组?
- entity-framework-6 - 如何让 UWP Uninstall 完全删除数据库?
- python - 在子进程终止之前,子进程的输出在无缓冲的标准输出管道上不可用?
- ios - MKPolyline boundingMapRect 插图
- xml - 在嵌套的 xml golang 中解组属性
- windows - Windows 10 杀死 EDB Postgres 8080 服务器
- jpa - 在 Play 中保存相关对象的列表!来自表单的框架 1.x