Языки программирования

Списки. Методы списков

В Python списки — это упорядоченные изменяемые коллекции объектов произвольных типов (в большинстве языков программирования используется другой термин «массив»). Список представляет собой последовательность элементов, пронумерованных от 0, как символы в строке.

Чтобы использовать списки, их нужно создать. Создать список можно несколькими способами.

Создать список можно точно также, как и кортеж, но вместо круглых скобок применяются квадратные:
cars = ["audi", "vw", "lexus"]
print("Посмотрим, что у нас в гараже: ")
for item in cars:
    print(item)
input()
Вывод программы:
Также список можно создать и при помощи литерала:
s = []  # Пустой список
l = ['s', 'p', ['isok'], 2]
print(s)
# выведет: []

print(l)
# выведет: ['s', 'p', ['isok'], 2]

input()
Список может содержать любое количество любых объектов (в том числе и вложенные списки), или не содержать ничего. И еще один способ создать список — это генераторы списков.

Генератор списков — способ построить новый список, применяя выражение к каждому элементу последовательности. Генераторы списков очень похожи на цикл for. Например:
c = [c * 3 for c in 'list']
print(c)
input()

# выведет: ['lll', 'iii', 'sss', 'ttt']

Функция len()

К списку можно применять функцию len():
cars = ["audi", "vw", "lexus", "gtr", "m5"]
print("В гараже ", len(cars), " автомобилей")
input()

# выведет: В гараже  5  автомобилей

Оператор in

Оператор in можно использовать для поиска по списку. Пример:
cars = ["audi", "vw", "lexus", "gtr", "m5"]
car = input("Введите искомый автомобиль: ")
if car in cars:
    print("У вас есть такой автомобиль!")
else:
    print("У вас нет такого автомобиля :(")
input()

Индексация списков

Списки индексируются. Индексация начинается с 0, поддерживаются положительные и отрицательные индексы. Пример:
cars = ["audi", "vw", "lexus", "gtr", "m5"]

start = -len(cars)
end = len(cars)

for i in range(start, end, 1):
    print("cars[", i, "] = ", cars[i])
input()

# будет выведено:
cars[ -5 ] =  audi
cars[ -4 ] =  vw
cars[ -3 ] =  lexus
cars[ -2 ] =  gtr
cars[ -1 ] =  m5
cars[ 0 ] =  audi
cars[ 1 ] =  vw
cars[ 2 ] =  lexus
cars[ 3 ] =  gtr
cars[ 4 ] =  m5
Сначала мы получаем начало (-len()) и конец (len()) диапазона. Потом проходимся по списку и указываем в качестве индекса переменную i, которая изменяется от start до end с приростом в 1.

Срезы списков

Списки поддерживают срезы. Принцип такой же, как и с кортежами: в квадратных скобках указываются начальный и конечный индексы среза:
cars = ["audi", "vw", "lexus", "gtr", "m5"]
start = int(input("Начальный индекс среза: "))
end = int(input("Конечный индекс среза: "))
print(cars[start:end])
input()

# вывод:
Начальный индекс среза: 2
Конечный индекс среза: 3
['lexus']

Сцепление списков

Списки поддерживают сцепление. Для сцепления списков используется оператор «+». Пример:
cars = ["audi", "vw", "lexus", "gtr", "m5"]
japan_cars = ["toyota", "nissan"]

cars = cars + japan_cars
print(cars)
input()

# выведет: ['audi', 'vw', 'lexus', 'gtr', 'm5', 'toyota', 'nissan']

Удаление элементов списка

Списки поддерживают удаление элементов, и даже удаление целых срезов. Пример:
cars = ["audi", "vw", "lexus", "gtr", "m5"]
del cars[0]
print(cars)
del cars[:2]
print(cars)
input()

# вывод:
['vw', 'lexus', 'gtr', 'm5']
['gtr', 'm5']

Методы списков

Для списков доступны основные встроенные функции, а также методы списков.

Стек и очереди

Список можно использовать как стек — когда последний добавленный элемент извлекается первым (LIFO, last-in, first-out). Для извлечения элемента с вершины стека есть метод pop():
stack = [1,2,3,4,5]  
stack.append(6)
stack.append(7)
stack.pop()
print(stack)
input()

# вывод: [1, 2, 3, 4, 5, 6]
Список можно использовать как очередь — элементы извлекаются в том же порядке, в котором они добавлялись (FIFO, first-in, first-out). Для извлечения элемента используется метод pop() с индексом 0:
queue = ['rock','in','roll']  
queue.append('alive')
queue.pop(0)
print(queue)
input()

# вывод: ['in', 'roll', 'alive']

Программа «Гараж»

Для закрепления материала создадим программу «Гараж». Данная программа демонстрирует все операции над списком.
cars = []

print("*" * 10, " Гараж ", "*" * 10)

responce = 1
while responce:
    print("""Выберите действие:
            1 - Добавить автомобиль
            2 - Удалить автомобиль
            3 - Вывести список автомобилей
            4 - Найти автомобиль
            5 - Отсортировать гараж
            0 - Выйти""")
    responce = int(input(">> "))
    if responce == 1:
       car = input("Введите название авто: ")
       cars.append(car)
    elif responce == 2:
       car = input("Введите название авто: ")
       cars.remove(car)
    elif responce == 3:
       if len(cars) > 0:
        for car in cars:
         print(car)
       else:
         print("В гараже нет авто!")
    elif responce == 4:
       car = input("Введите название авто: ")
       if car in cars:
          print("Такой автомобиль есть в гараже!")
       else:
          print("Такого автомобиля нет в гараже!")
    elif responce == 5:
          cars.sort()
          print("Сортировка выполнена!")
    else:
          print("До скорых встреч!")
input()
Разберем нашу программу. В цикле мы выводим подсказку-меню. Пользователь вводит свой выбор, программа выполняет действия в зависимости от введенного номера действия.

Самостоятельно напишите программу и проверьте её работоспособность. Если будут проблемы пишите в комментариях.

Списки в Python:
Самоучитель по Python