"A data structure is a deal you make with your future self: I'll arrange the data this way, so that the thing I do most often becomes cheap."
Two Ways to Hold the Same Names
Imagine I hand you ten thousand names on loose slips of paper, dumped in a shoebox. Now I ask: "Is 'Pippa' in there?" You have no choice but to pull slips one at a time until you find it or hit the bottom. Ten thousand slips, worst case.
Now imagine the same ten thousand names, but in a phone book — alphabetized, bound, paged. Same data. Same names. But now "Is 'Pippa' in there?" takes a few flips, because the arrangement lets you skip past whole sections. You didn't change the data. You changed the structure around it, and a slow question became a fast one.
That's the entire idea. A data structure is not "where you keep stuff." It's data plus the operations that are cheap on it.
Every Structure Is a Bargain
Here's the catch nobody tells beginners: you never get cheap-everything. The phone book makes lookup cheap — but try inserting a new name in the middle of a bound book. You'd have to shift everything after it. The shoebox was terrible at lookup but fantastic at insertion: just toss the slip in.
So every data structure is a trade. You make the operation you do most cheap, and you pay for it somewhere you do less. Choosing a structure is really choosing which operation deserves to be fast. That decision — not memorizing the structures — is the skill.
You Already Use These
A Python list is a phone book that's great at "give me item #5" (instant) and bad at "is X in here?" (scan the whole thing). A Python set is the opposite kind of magic: it can't give you "item #5" at all, but "is X in here?" is nearly instant no matter how big it gets. Same elements, different deal.
You don't pick between them by taste. You pick by asking: what am I going to do to this data, over and over? That question is the compass for this entire quest.
Pippa's Confession
list by reflex and started asking what I'd actually be doing to the data.