Sort of, they're referred to as lists, but they're more like traditional lists fused with hash maps/dictionaries, in terms of other programming languages. You can add elements to a Skript list, set it to a specific set of values (like I did in that split), and loop over a list. As you saw, you can refer to specific elements in the list by adding a specific key after the :: list identifier, which is very much like using the square brackets array notation in another language.
You'll notice that Skript list indices are 1 based instead of 0 based, so {_sections::1} is equivalent to sections[0] if you were to convert it to another language. However, the reason I say they're also like hash maps is because you can manually set the key that goes after the :: identifier. As you can see, the default keys that are used are just numbers that count up from 1, but you can set them yourself, which can be very useful. For example, I have this code on my server:
code_language.skript:
on join:
set {name::%player's uuid%} to player's name
Which then lets me reference the {name::*} list in any other script, but pass in the UUID of any player who joins my server to get back their name, without me having to use an addon to parse their UUID as a player to get their name.
Some other example code just to give you an idea:
code_language.skript:
on join:
set {players::%player's uuid%} to player's name
command /listplayers [<text="">]:
trigger:
if text-argument is "":
send "Listing all players who have joined:" to the command sender
send "%{players::*}%"
else:
send "Listing all players whose name contains '%text-argument%':" to the command sender
loop {players::*}:
"%loop-value%" contains "%text-argument%"
add loop-value to {_matching::*}
send "%{_matching::*}%" to the command sender
command /listuuids:
trigger:
send "Listing UUID of all players who have joined:" to the command sender
loop {players::*}:
add "%loop-index%" to {_uuids::*}
send "%{_uuids::*}%" to the command sender
As you can see, you can reference the "key" (the index) of the current thing you're looping in a list with the "loop-index" expression. You can think of looping a list like foreaching over a dictionary or hashmap, where loop-index is the current set's key while loop-value is the current set's value.