Список

Список - это коллекция элементов, где каждому элементу присваивается порядковой номер (индекс). Индексация начинается с 0 т.е первый по счету элемент имеет номер 0.

Создание пустого списка:


empty_list = []

Создадим список, состоящий из нескольких чисел:


numbers = [40, 20, 90, 11, 5]

Список из str (строковые типы данных)


fruits = ['Apple', 'Grape', 'Peach', 'Banan', 'Orange']

Список из различных типов данных


values = [3.14, 10, 'Hello world!', False, 'Python is the best']

Список, который содержит списки:


list_of_lists = [[2, 4, 0], [11, 2, 10], [0, 19, 27]]

Индексирование

Индекс - это порядковый номер объекта в списке. Пример: вспомните урок физкультуры, когда вы стоите в шеренге и звучит команда “По порядку — РАССЧИТАЙСЬ” и каждый называет свой порядковый номер, здесь тоже самое только отсчет начинается с 0.

Но давайте лучше посмотрим живой пример:


students = ['Кирилл', 'Саша', 'Артем', 'Лиза', 'Света']
print(students[0])
print(students[1])
print(students[4])

>>> Кирилл
>>> Саша
>>> Света

Кроме “чтения” из списка, мы можем его изменить:


students = ['Кирилл', 'Саша', 'Артем', 'Лиза', 'Света']
print(students)
>>> ['Кирилл', 'Саша', 'Артем', 'Лиза', 'Света']

# Теперь мы заменим 1 и 4 ученика
students[1] = 'Славик'
students[4] = 'Оксана'
print(students)
>>> ['Кирилл', 'Славик', 'Артем', 'Лиза', 'Оксана']

Индексирование работает и в обратную сторону

Но нужно обратить внимание на, что в обратном порядке индекс начинается с -1, а не с 0.


students = ['Кирилл', 'Саша', 'Артем', 'Лиза', 'Света']
print(students[-1])
print(students[-2])
print(students[-4])

>>> Света
>>> Лиза
>>> Саша

Создание списков

Самый простой это написать весь список вручную, но не очень функциональный.


numbers = [40, 20, 90, 11, 5]

Функция list()

Данная функция получая в качестве аргумента любой объект, который можно посчитать, делает из него список. Например строку или range.


letters = list('abcdef')
numbers = list(range(10))
even_numbers = list(range(0, 10, 2))

print(letters)
print(numbers)
print(even_numbers)

>>> ['a', 'b', 'c', 'd', 'e', 'f'
>>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> [0, 2, 4, 6, 8]

Работа со списком

Длина списка len()

Что делать если нам нужно узнать длину неизвестного нам списка? Первое решение конечно можно вызвать цикл, пройтись по всему списку и посчитать количество элементов в нем. Да способ рабочий, но долгий как написании так и в выполнении.

Для подобных задач в ЯП уже предусмотрены отдельные функции. len() [length - длина] - функция которая возвращает длину.

Тут главное не запутаться она вернет длину, а не индекс. Если длина списка 5, то последний элемент будет иметь индекс 4. Тк индексация начинается с 0.


fruits = ['Apple', 'Grape', 'Peach', 'Banan', 'Orange']
print(len(fruits))

>>> 5

numbers = [40, 20, 90]
print(len(numbers))

>>> 3

И давайте для общей пользы делу разберем пример с подсчетом с помощью цикла for:



students = ['Кирилл', 'Саша', 'Артем', 'Лиза', 'Света']
index = 0 # Изначально индекс равен 0
for name in students:
# Цикл идет пока не кончится список
    index+=1 # каждый проход мы делаем +1 переменной index

print(index)

Срезы

Ну тут все немного проще, вы берете список и просто его обрезаете. Вы можете обрезать начало, конец или сразу и начало, и конец, тем самым получив нужный вам кусок.



Список [начальный_индекс:конечный_индекс - 1:длина_шага]

# Обрезаем конец списка
students = ['Кирилл', 'Саша', 'Артем', 'Лиза', 'Света']
print(students[:3])
>>> ['Кирилл', 'Саша', 'Артем']

# Обрезаем начало списка
students = ['Кирилл', 'Саша', 'Артем', 'Лиза', 'Света']
print(students[2:])
>>> ['Артем', 'Лиза', 'Света']

# Обрезаем и конец и начало
students = ['Кирилл', 'Саша', 'Артем', 'Лиза', 'Света']
print(students[2:4])
>>> ['Артем', 'Лиза']

# Что такое шаг?
# Создаем список от 0 до 20

number = list (range(21))
# Как думаете почему написали 21?
print(number)
>>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]

# Выводим с 5 по 13 индекс с шагом 2
print(number[5:13:2])
>>>[5, 7, 9, 11]

# Теперь выведем каждый 2 элемент
# и сломаем мозг :)
# если не указано начало и конец
# то берутся начало и конец списка

print(number[0::2])
print(number[::2])

>>> [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
>>> [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]

Поиск с помощью in

Не совсем верно называть, это поиском т.к это проверка наличия такого элемента в списке. Но при должной сноровке это можно переделать в поиск.



fruits = ['Apple', 'Grape', 'Peach', 'Banan', 'Orange']
if 'Apple' in fruits:
    print('В списке есть элемент Apple')
else:
    print('В списке нет этого элемента')

Метода append() - добавляет элемент в конец



# Создаем список, состоящий из чисел от 0 до 10 включительно
numbers = list(range(0,11))

# Добавляем число 200 в конец списка
numbers.append(200)
# Добавляем строку
numbers.append('Hello world!')
# Добавляем список в список
numbers.append([1, 2, 3])

print(numbers)

>>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 200, 'Hello world!', [1, 2, 3]]

Метод insert() - добавляет элемент в любое место



# Создаем список, состоящий из чисел от 0 до 5
numbers = list(range(0,5))

# список.insert(индекс, добавляемый элемент)

# Добавляем число 200 в конец списка
numbers.insert(0,200)
# Добавляем строку
numbers.insert(5,'Hello world!')
# Добавляем список в список
# Если индекс больше чем список
# То элемент добавится в конец
numbers.insert(100,[1, 2, 3])

print(numbers)

>>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 200, 'Hello world!', [1, 2, 3]]

Метод pop() - удалить элемент



# Создаем список, состоящий из чисел от 0 до 10
numbers = list(range(0,10))
print(numbers)
# список.pop(индекс)
# если нет индекса удаляется последний элемент

# Удаляем первый элемент
numbers.pop(0)
print(numbers)

# Удаляем второй элемент
numbers.pop(1)
print(numbers)

# Удаляем последний элемент
numbers.pop()
print(numbers)

>>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> [1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> [1, 3, 4, 5, 6, 7, 8, 9]
>>> [1, 3, 4, 5, 6, 7, 8]

Метод remove() - удаляет пер­вый найденный по значению элемент



fruits = ['Orange', 'Grape', 'Peach', 'Banan', 'Apple']

fruits.remove('Banan')
print(fruits)
# Если элемент не будет найден, то программа завершится с ошибкой


>>> ['Orange', 'Grape', 'Peach', 'Apple']

Метод count() - количество элемент с заданым значением



numbers = [100, 100, 100, 200, 200, 500, 500, 500, 500, 500, 999]
print(numbers.count(100)) # 1
print(numbers.count(200)) # 2
print(numbers.count(500)) # 3
print(numbers.count(999)) # 4

>>> 3 # 1
>>> 2 # 2
>>> 5 # 3
>>> 1 # 4

Метод sort() - сортирует список


# Генерируем список из случайных чисел
import random
numbers = list(random.sample(range(0,10),10))

# несортированный список
print(numbers)

# отсортированный список
numbers.sort()
print(numbers)

# отсортированный в обратном порядке список
numbers.sort(reverse=True)
print(numbers)

>>> [3, 7, 8, 0, 4, 6, 1, 5, 2, 9]
>>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

Метод reverse() - перевернуть список

Не путаться с сортировкой. Функция просто переворачивает список, независимо от того какие там элементы.



numbers = [1,3,5,7,9,0,8,6,4,2]

# список
print(numbers)

# перевернутый список
numbers.reverse()
print(numbers)

# отсортированный в обратном порядке список
numbers.sort(reverse=True)
print(numbers)

>>> [1, 3, 5, 7, 9, 0, 8, 6, 4, 2]
>>> [2, 4, 6, 8, 0, 9, 7, 5, 3, 1]
>>> [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

Метод extend()

Объединяет два списка, если быть точным то к списку1 добавляет список2.



fruits = ['Banana', 'Apple', 'Grape']
vegetables = ['Tomato', 'Cucumber', 'Potato', 'Carrot']
fruits.extend(vegetables)
print(fruits)

>>> ['Banana', 'Apple', 'Grape', 'Tomato', 'Cucumber', 'Potato', 'Carrot']

Метод clear()

Метод index()

Метод copy()