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

В 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']

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

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

Метод Что делает
list.append(x) Добавляет элемент в конец списка
list.extend(L) Расширяет список list, добавляя в конец все элементы списка L
list.insert(i, x) Вставляет на i-ый элемент значение x
list.remove(x) Удаляет первый элемент в списке, имеющий значение x. ValueError, если такого элемента не существует
list.pop([i]) Удаляет i-ый элемент и возвращает его. Если индекс не указан, удаляется последний элемент
list.index(x, [start [, end]]) Возвращает положение первого элемента со значением x (при этом поиск ведется от start до end)
list.count(x) Возвращает количество элементов со значением x
list.sort([key=функция]) Сортирует список на основе функции
list.reverse() Разворачивает список
list.copy() Поверхностная копия списка
list.clear() Очищает список


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

Список можно использовать как стек — когда последний добавленный элемент извлекается первым (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()

Разберем нашу программу. В цикле мы выводим подсказку-меню. Пользователь вводит свой выбор, программа выполняет действия в зависимости от введенного номера действия.

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

 
Поделиться в facebook
Facebook
Поделиться в twitter
Twitter
Поделиться в vk
VK
Поделиться в google
Google+
Поделиться в email
Email

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

Хорошая подборка. Рекомендую еще почитать тут: https://codecamp.ru/blog/10-primerov-raboty-so-spiskami-v-python/, там по ссылке собраны различные примеры встречающиеся в работе со списками: проверка и существование элемента, перебор значений списка, разные методы списков, работа с многомерными списками, логические операции итд

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Группа в VK

Помощь проекту

Обнаружили опечатку?

Сообщите нам об этом, выделите текст с ошибкой и нажмите Ctrl+Enter, будем очень признательны!

Свежие статьи

Похожие статьи

Связи между моделями.

Связи между моделями.

В нашем проекте есть одна модель под названием “Объявления”. В этой статье мы создадим новый класс модели “Rubric”, которая будет представлять рубрики объявлений. Допишем в

 
Параметры полей и моделей.

Параметры полей и моделей.

Для того, чтобы наша административная панель Django выглядела более понятна для обычного пользователя необходимо указать правильные названия полей. Наша созданная модель представляется непонятной аббревиатурой “Bbs”,

 
Административный web-сайт Django.

Административный web-сайт Django.

Административный web-сайт предоставляет доступ ко всем моделям, объявленным во всех приложениях, что составляют проект. С помощью данной панели можно просматривать, добавлять, править и удалять записи,

 

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: