我对棋盘游戏实施了广度优先搜索。在这里,我使用 adict
来反映每个级别上的重复板配置。目前,整体搜索几乎将我拥有的所有 RAM (16GB) 用于一个启动配置。我计划为不同的开始配置集成交叉检查。因此,我需要对找到的配置进行读取访问,并且如果该级别完成,则该级别的 dict 不会更改。
这就是为什么我计划在评估下一个级别之前将 the 转换dict
为具有位置键和位置值的平面数据结构(list
或tuple
)。[2n]
[2n+1]
问题是找到一个从到for的快速转换,并且不止一个项目。{1: 2, 3: 4}
[1, 2, 3, 4]
dict
10**8
我sum(dict.items(), ())
从Natim对另一个问题的评论中发现,该问题有效,但速度太慢(对于dict
超过 10**6 个项目的 s,它似乎停止工作)。
使用itertools
函数chain
和classmethod
替代构造函数from_iterable
:
>>> from itertools import chain
>>> list(chain.from_iterable(dct.items()))
[1, 2, 3, 4]
>>>
或与operator.iconcat
和functools.reduce
:
>>> import operator, functools
>>> functools.reduce(operator.iconcat, dct.items(), [])
[1, 2, 3, 4]
>>>
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句