# Basic data structures

There are four basic built-in container types in Python:

* **List** is a collection which is ordered and changeable; duplicate members.
* **Tuple** is a collection which is ordered and unchangeable; duplicate members.
* **Dictionary** is a collection which is unordered, changeable and indexed; no duplicate members.
* **Set** is a collection which is unordered and unindexed; no duplicate members.

Besides, some data structures as **Stacks**, **Queue** are also very powerful and widely used in practice. More advanced data structures includes **Linked-list**, **Double linked-list** and **Graph**. **Tree** a special case of **Graph** is also widely used. **Graph** and **Tree** are presented outside this section due to the vast information related to them.

And of course we should mention **Data abstraction** as well, its extension is Object-Oriented Programming mindset which seems to be really convenient but also, sometimes, quite vague. You can find numerous good and comprehensive references about OOP online, therefore, **Data abstraction** is not presented here anymore.

A comprehensive review of popular data structures in practice can be found [here](https://en.wikipedia.org/wiki/List_of_data_structures).
