Try this:
Persistent data structures are data structures which, unlike arrays or lists, always preserve their original structure and contents.
They are effectively immutable - instead of changing such a structure, any computation will yield a new copy leaving the original structure unchanged. Whereas conventional data structures follow an imperative (change-based) philosophy, persistent ones are commonly used in functional programming where, in extreme cases, no change is allowed at all. The advantage of this paradigm is that persistent data are much safer, often easier to handle and even preventing bugs connected to unintended change and multithreading issues. Many problems can be formulated functionally in a much more concise way.
Example for a non-persistent data structure: The list (vector-list)
list = [1, 2, 3]
# List is [1, 2, 3]
list += [4]
# Added an element at the end
list[0] = 42
# We changed the first element to 42
# List is [42, 2, 3, 4]
Persistence example: Linked lists (Haskell)
list = [1, 2, 3]
# List is [1, 2, 3]
list2 = 0 : list
# List2 combines [0] and [1, 2, 3] to [0, 1, 2, 3]
# List is still [1, 2, 3]
list3 = updateAt 0 42 list
# List3 contains the elements of list2 with the first one set to 42
# List and List2 still hold their original values