Sitecore 9 introduced the dynamic placeholder feature. Please follow the official documentation for more information about when and how to use it.
The problem with the default dynamic placeholders
At first glance, the new dynamic placeholders look very straightforward. Basically, we provide an integer which is the amount of placeholders that should be rendered. Additionally, we can define the seed which indicates the starting value that is used for key generation (see example below). Also the markup customization possibilities are quite nice. However, when I used it in a project I ran into a problem that made me realize that the simple mechanism comes with a huge downside.