Список
Список
Список - это коллекция элементов, где каждому элементу присваивается порядковой номер (индекс). Индексация начинается с 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']