如何在列表中查找索引的历史记录?
How to find the history of an index in a list?
所以假设我有这个代码:list1 = [1,2,3]
。
假设我们在索引 0 list1 = [4,1,2,3]
中插入 4。
有没有办法去倒退并找到索引 0 中的 "history" 是什么?这是我问题的简化版本,但想象一下许多不同的事情发生了变化 list1
。
您要的是 persistent data structure。 Python 列表是 可变的 ,并且不存储任何类型的历史记录(这是一件好事,因为开销会非常高,而且通常不需要)。
根据您实际尝试做的事情,您可以简单地创建 新 列表,而不是改变现有列表。例如代替:
ls = [1, 2, 3]
ls.insert(0, 4)
创建新列表:
ls = [1, 2, 3]
ls2 = [4] + ls
这会保留 ls
并让您将其与 ls2
进行比较。
正如 cᴏʟᴅsᴘᴇᴇᴅ 所建议的,您还可以实现自己的 list-like 结构,在日志中记录其历史。它不会太复杂,但我建议先研究其他选项(并验证这是 really what you need),这在实践中并不常见。
你为什么不为你的列表创建一个散列 table,这样你就可以稍后检查索引的历史:
list1 = [1,2,3]
hash_table={i:j for i,j in enumerate(list1)}
print(hash_table)
输出:
{0: 1, 1: 2, 2: 3}
所以假设我有这个代码:list1 = [1,2,3]
。
假设我们在索引 0 list1 = [4,1,2,3]
中插入 4。
有没有办法去倒退并找到索引 0 中的 "history" 是什么?这是我问题的简化版本,但想象一下许多不同的事情发生了变化 list1
。
您要的是 persistent data structure。 Python 列表是 可变的 ,并且不存储任何类型的历史记录(这是一件好事,因为开销会非常高,而且通常不需要)。
根据您实际尝试做的事情,您可以简单地创建 新 列表,而不是改变现有列表。例如代替:
ls = [1, 2, 3]
ls.insert(0, 4)
创建新列表:
ls = [1, 2, 3]
ls2 = [4] + ls
这会保留 ls
并让您将其与 ls2
进行比较。
正如 cᴏʟᴅsᴘᴇᴇᴅ 所建议的,您还可以实现自己的 list-like 结构,在日志中记录其历史。它不会太复杂,但我建议先研究其他选项(并验证这是 really what you need),这在实践中并不常见。
你为什么不为你的列表创建一个散列 table,这样你就可以稍后检查索引的历史:
list1 = [1,2,3]
hash_table={i:j for i,j in enumerate(list1)}
print(hash_table)
输出:
{0: 1, 1: 2, 2: 3}