2024-04-25 21:53:59 发布
网友
我正在尝试为tic-tac-toe制作一个基于视觉的强化学习机器人,并一直在研究如何快速保存和检索数据。你知道吗
因此,将数据保存为列表例如,起始点是[0, 0, 0, 0, 0, 0, 0, 0, 0],而该[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]的起始策略。你知道吗
[0, 0, 0, 0, 0, 0, 0, 0, 0]
[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
问题是: 我应该以什么格式保存当前状态和策略,以便快速访问它以检查状态是否已存在并更新策略?我在想pandas和pickle,但发现用列表实现有点困难。你知道吗
pandas
pickle
您需要的似乎是散列,标准Python类set和dictionary使用散列。但是,您需要存储的对象list是不可散列的,因此不能直接用于这些容器中。你知道吗
set
dictionary
list
哈希表为访问提供了O(1)复杂性,这是定期检查所需的。但是需要散列的数据类型带来了一些困难,在这里如何克服这些困难。你知道吗
1-您可以将列表转换为元组,然后将其存储在集合或字典中(如果您还想为键指定一些值)。这需要O(n)到tuple的转换。请注意,您不能更改元组,您应该完全替换它(这就是为什么它是可哈希的,而list不是)。你知道吗
all_states = set() state = tuple([0, 0, 0, 0, 0, 0, 0, 0, 0]) all_states.add(state)
2-如果您想坚持使用列表,我想创建一个包装类,然后哈希应该可以工作,但不能保证此方法是一种建议的python方法。你知道吗
class State: def __init__(self, contents): self.contents = contents one_state = State([1, 2, 3]) hash(one_state) # Now it is hashable, just for checking. # If you can add it to a set, it is hashable. all_states.add(state)
您需要的似乎是散列,标准Python类
set
和dictionary
使用散列。但是,您需要存储的对象list
是不可散列的,因此不能直接用于这些容器中。你知道吗哈希表为访问提供了O(1)复杂性,这是定期检查所需的。但是需要散列的数据类型带来了一些困难,在这里如何克服这些困难。你知道吗
1-您可以将列表转换为元组,然后将其存储在集合或字典中(如果您还想为键指定一些值)。这需要O(n)到tuple的转换。请注意,您不能更改元组,您应该完全替换它(这就是为什么它是可哈希的,而list不是)。你知道吗
2-如果您想坚持使用列表,我想创建一个包装类,然后哈希应该可以工作,但不能保证此方法是一种建议的python方法。你知道吗
相关问题 更多 >
编程相关推荐