# Списки

В этом разделе мы рассмотрим очень полезную структуру данных - список. Мы очень кратко познакомились с ним ранее в разделе о рандомизации, тогда мы случайным образом выбирали ноты из списка, чтобы играть их:

    play choose([50, 55, 62])

В этом разделе мы также изучим использование списков для представления аккордов и гамм. Сначала давайте вспомним, как мы можем сыграть аккорд. Помните, что если мы не используем `sleep`, все звуки воспроизводятся одновременно:

    play 52
    play 55
    play 59

Давайте посмотрим на другой способ представления этого кода.

## Воспроизведение cписка

Один из вариантов - разместить все ноы в виде списка: `[52, 55, 59]`. Наша дружественная функция `play` достаточно умна, чтобы понимать, как играть список нот. Попробуйте это:

    play [52, 55, 59]

О, это уже приятнее читать. Воспроизведение списка нот не мешает вам использовать любые обычные параметры:

    play [52, 55, 59], amp: 0.3

Конечно, мы также можем использовать традиционные имена нот вместо номеров MIDI:

    play [:E3, :G3, :B3]

Теперь те из вас, кому повезло изучать теорию музыки, смогут подтвердить, что аккорд ми минор был сыгран в 3-й октаве.

## Доступ к списку

Еще одной полезной особенностью списка является возможность получать оттуда информацию. Это может звучать немного странно, но это не сложнее чьей-либо просьбы открыть книгу на странице 23. Применительно к списку, говорят - “Какой элемент находится по индексу 23”? Единственная странность заключается в том, что в программировании индексы начинаются с 0, а не с 1.

Мы не считаем индекы списка 1, 2, 3… вместо этого мы считаем 0, 1, 2…

Давайте рассмотрим это чуть более подробно. Взгляните на этот список:

    [52, 55, 59]

Здесь нет ничего страшного. Теперь, какой второй элемент в этом списке? Конечно, это `55`. Это было легко. Давайте посмотрим, что нам ответит компьютер на аналогичный вопрос:

    puts [52, 55, 59][1]

Это выглядит немного странно, если вы никогда не видели ничего подобного раньше. Поверьте мне, это не очень сложно. Строка выше состоит из трёх частей: слово `puts`, наш список `[52, 55, 59]` и наш индекс `[1]`. Сначала мы говорим `puts` потому что хотим, чтобы Sonic Pi напечатал ответ для нас в журнал. Далее, мы даём ему наш список, и, наконец, наш индекс запрашивает второй элемент. Мы должны окружить индекс квадратными скобками и т.к. счёт начинается с `0`, индекс второго элемента это `1`. Посмотрите:

    # indexes:  0   1   2
               [52, 55, 59]

Попробуйте выполнить код `puts [52, 55, 59][1]` и вы увидите, что `55` появится в журнале. Измените индекс `1` на другой, попробуйте более длинные списки и подумайте, как вы сможете использовать список в своём следующем сочинении. Например, какие музыкальные структуры могут быть представлены в виде ряда чисел…