如何在列表中查找索引的历史记录?

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}