Учимся добавлять и изменять элементы, объединять и копировать списки.
В современных языках программирования есть предустановленные типы: символы, числа или классы. Есть и коллекции — массивы, списки и прочие структуры данных — множества элементов фиксированной или динамической размерности.
При объявлении переменной под объект выделяется оперативная память. Например, для строки в четыре символа — восемь байт. Каждый символ занимает адрес в оперативной памяти, а строка представляет собой массив этих адресов. В C-подобных языках массивы создаются определенного размера, под тип объектов. В Python же нет ограничений ни по типу элементов множества, ни по его размерности. То есть список в Python — это динамическая коллекция указателей.
🚀 Объявить список
Синтаксическая конструкция для создания списка Python:
mylst = [1, 2, 3, 4, 5]
Mylst — название переменной. В скобках указали элементы.
В Python есть ключевое слово list(). Это функция, которая либо создает пустой список, либо приводит к списку итерируемый объект. Чтобы создать пустой объект списка с помощью функции, напишите:
mylst = list()
🚀 Обратиться к элементу
Списки — это множества элементов. Чтобы обратиться к ним, указывают индекс — порядковый номер. В отличие, например, от словаря, который позволяет получать значение по ключу. Индекс первого элемента — 0, второго — 1, третьего — 2.
Так обратитесь к пятому элементу списка:
mylst = [1, 2, 3, 4, 5]
print(mylst[4])
5
🚀 Добавить элемент
Сделайте это с помощью встроенной функции append():
mylst = [1, 2, 3, 4, 5]
mylst.append(6)
print(mylst)
[1, 2, 3, 4, 5, 6]
Либо с помощью метода insert(), который принимает два аргумента — индекс и значение:
mylst = [1, 2, 3, 4, 5]
mylst.insert(1, 25)
print(mylst)
[1, 25, 2, 3, 4, 5]
❗ Если добавить элемент с помощью этого метода, произойдет смещение, а не его замена.
🚀 Изменить элемент
Для этого установите новое значение по его индексу:
mylst = [1, 2, 3, 4, 5]
mylst[1] = None
print(mylst)
[1, None, 3, 4, 5]
В Python необязательно, чтобы элементы коллекции были одного типа.
🚀 Удалить элемент
Для этого воспользуйтесь встроенной функцией del():
mylst = [1, 2, 3, 4, 5, 4, 3, 2, 1]
del mylst[2]
print(mylst)
[1, 2, 4, 5, 4, 3, 2, 1]
Либо примените метод удаления remove():
mylst = [1, 2, 3, 4, 5, 4, 3, 2, 1]
mylst.remove(2)
print(mylst)
[1, 3, 4, 5, 4, 3, 2, 1]
🚀 Проверить на вхождение
Чтобы проверить, есть ли указанный элемент в списке, воспользуйтесь ключевым словом in:
mylst = [1, 2, 3, 4, 5]
print(None in mylst)
False
print(3 in mylst)
True
🚀 Объединить списки
Вызовите метод extend():
mylst = [1, 2]
mylst1 = [3, 4]
mylst2 = [5]
mylst.extend(mylst1)
print(mylst)
[1, 2, 3, 4]
mylst.extend(mylst2)
print(mylst)
[1, 2, 3, 4, 5]
Или оператор сложения с присваиванием:
mylst = [1, 2]
mylst1 = [3, 4]
mylst2 = [5]
mylst += mylst1
print(mylst)
[1, 2, 3, 4]
mylst += mylst2
print(mylst)
[1, 2, 3, 4, 5]
🚀 Копировать список
Воспользуйтесь методом списков copy():
mylst = [1, 2, 3, 4, 5]
mylst_copy = mylst.copy()
print(mylst)
[1, 2, 3, 4, 5]
print(mylst_copy)
[1, 2, 3, 4, 5]
Либо создайте полный срез:
mylst = [1, 2, 3, 4, 5]
mylst_copy = mylst[::]
print(mylst)
[1, 2, 3, 4, 5]
print(mylst_copy)
[1, 2, 3, 4, 5]
🚀 Выполнить итерацию по списку
Воспользуйтесь конструкцией for:
mylst = [1, 2, 3, 4, 5]
for item in mylst:
print(item)
1
2
3
4
5
Итерацию еще выполняют с помощью цикла while:
mylst = [1, 2, 3, 4, 5]
i = 0
while True:
try:
print(mylst[i])
except IndexError:
print("Done!")
break
i += 1
1
2
3
4
5
Done!
«Если вы думаете, что хорошо разбираетесь в списках, подумайте еще раз. Дело в том, что списки в Python больше похожи на то, что мы привыкли называть массивами в других языках программирования, а не на связанные списки, которые обычно приходят на ум при слове „список“».
Пол Бэрри «Изучаем программирование на Python»
✔️ index
Позволяет узнать индекс элемента, возвращает его при первом совпадении:
mylst = [1, 2, 3, 4, 5, 4, 3, 2, 1]
print(mylst.index(3))
2
✔️ count
Позволяет получить количество элементов списка:
mylst = [1, 2, 3, 4, 5, 4, 3, 2, 1]
count_for_one = mylst.count(1)
print(count_for_one)
2
count_for_five = mylst.count(5)
print(count_for_five)
1
✔️ clear
Полностью очищает список:
mylst = [1, 2, 3, 4, 5]
mylst.clear()
print(mylst)
[]
✔️ sort
Сортирует список по указанному ключу. Принимает два необязательных аргумента: key — ключ, по которому производят сортировку, булевый флаг reverse — сортирует объекты в обратном порядке. По умолчанию в качестве ключа используют значение переменной:
mylst = [1, 3, 2, 4, 5]
mylst.sort() # reverse=False
print(mylst)
[1, 2, 3, 4, 5]
✔️ reverse
Инвертирует последовательность элементов:
mylst = [1, 2, 3, 4, 5]
mylst.reverse()
print(mylst)
[5, 4, 3, 2, 1]
✔️ pop
Позволяет получить элемент и удаляет его из списка. Принимает индекс в качестве необязательного аргумента. По умолчанию это последний элемент:
mylst = [1, 2, 3, 4, 5]
x = mylst.pop()
print(x)
5
print(mylst)
[1, 2, 3, 4]
y = mylst.pop(2)
print(y)
3
print(mylst)
[1, 2, 4]
✅ Получение длины любой коллекции
Используйте функцию len():
mylst = [1, 2, 3, 4, 5]
list_length = len(mylst)
print(list_length)
5
✅ Возврат элемента с максимальным значением
Используйте функцию max():
mylst = [1, 2, 3, 4, 5, 4, 3, 2, 1]
max_value = max(mylst)
print(max_value)
5
✅ Возврат элемента с минимальным значением
Используйте функцию min():
mylst = [1, 2, 3, 4, 5]
min_value = min(mylst)
print(min_value)
1
✅ Приведение к типу
Из любого итерируемого объекта можно получить список. Для этого передайте итерируемый объект функции list(). Этим объектом может быть строка, множество, кортеж или генератор:
myset = {1, 2, 3, 4}
mytuple = (5, 6)
mystring = "Test string"
lst1 = list(myset)
lst2 = list(mytuple)
lst3 = list(mystring)
print(lst1)
[1, 2, 3, 4]
print(lst2)
[5, 6]
print(lst3)
['T', 'e', 's', 't', ' ', 's', 't', 'r', 'i', 'n', 'g']
Срезы позволяют создавать новые списки на основе существующего. Можно получить полную копию списка или некоторые элементы. Для этого используют шаг или указывают начальный и крайний индексы:
mylst = [1, 2, 3, 4, 5]
mylst_slice_0 = mylst[::] # полная копия
print(mylst_slice_0)
[1, 2, 3, 4, 5]
mylst_slice_1 = mylst[0:2] # крайний индекс (не включается в срез)
print(mylst_slice_1)
[1, 2]
mylst_slice_2 = mylst[::2] # указание шага
print(mylst_slice_2)
[1, 3, 5]
Синтаксис работы со срезами:
# имя переменной[стартовый индекс:конечный индекс:шаг]
variable_name[start_index:end_index:step]
Эта конструкция позволяет легко создавать списки:
mylst = [_ for _ in range(6)]
print(mylst)
[0, 1, 2, 3, 4, 5]
Вы можете указать условия для генерации элементов:
mylst = [x if x % 2 == 0 else "odd" for x in range(20)]
print(mylst)
[0, 'odd', 2, 'odd', 4, 'odd', 6, 'odd', 8, 'odd', 10, 'odd', 12, 'odd', 14, 'odd', 16, 'odd', 18, 'odd']
Изучайте Python на онлайн-курсе от Skypro «Python-разработчик». Вас ждут 400 часов теории и практики, живые вебинары для разбора домашек. Сделаете четыре проекта для портфолио, получите диплом о переподготовке и помощь в поиске работы: создадите цепляющее резюме и подготовитесь к собеседованиям.
Рассказываем про «Тинькофф», «Билайн» и другие компании.
Указывайте в отчете только одну ошибку, прикладывайте скрины, сообщения и коды.
Конструкция, чтобы много раз выполнять один и тот же участок кода.
JSON часто применяют, когда разрабатывают API и веб-приложения.
Есть сервисы, платформы и телеграм-каналы с вакансиями по всему миру.
С помощью HTML структурируют страницу на сайте, добавляют картинки, таблицы, списки.
Цикл for используют, когда количество повторов известно заранее.
Есть комьюнити на платформах, под эгидой компаний или самоорганизующиеся.
Обязанности и зарплата аналитика, Python- и Java-разработчиков и не только.
Правильное питание — это не о жестких диетах и полном отказе от любимых продуктов.
Благодаря методу «круга-пирога» увидите свое время и возьмете его под контроль.
Ищите мотивацию, хвалите себя, визуализируйте план и результат.
Лягушки — небольшие, но неприятные дела, слоны — долговременные задачи.
Когда ставите цель, отталкивайтесь от проблемы и конкретизируйте решение.
Этот специалист контролирует все этапы проекта и приводит его к успеху.
Советы всем удаленщикам — больше двигаться, делать зарядку, разминку для глаз.
Junior зарабатывает от 40 000 ₽, Middle от 100 000 ₽, а Senior от 250 000 ₽ и выше.
Совет от героини: сделайте первый шаг, дальше будет проще; учитесь и идите вперед.
Фишки и стоимость Forest, WaterDo, SleepTown, Alarmy, Pomodoro Timer Lite.
Программист fullstack получает до 550 000 ₽, а на тестировщика учатся 4–15 мес.
SQL используют в банках, торговле, перевозках: везде, где много информации.
Сначала поставьте цель: выберите сферу и определите, кем видите себя через 10 лет.
Термины разработки, Scrum, неформального общения, организационных процессов.
Узнаете о работе программиста и поймете, как писать хороший код.
Мозг меняется всю жизнь. Мы можем на него влиять: изучать новое, развивать навыки.
Помогает планирование, вера в то, что реально изменить жизнь, поддержка семьи.
С помощью CSS задают цвет, размеры, анимацию, адаптируют сайт под устройства.
Python — самый популярный язык программирования в феврале 2022 года.
Гуманитарию подойдут профессии тестировщика, веб-дизайнера и не только.
Фронтендер создает интерфейс продукта, бэкендер работает с серверной частью.
Обязанности Java-разработчика — писать код, тестировать и улучшать его.
IT-отрасль привлекает удаленкой, карьерным ростом, высоким доходом.
Воспользуйтесь Google Colab, онлайн-интерпретаторами или скачайте Python.
Используйте конструкторы no-code, Java или Kotlin, Android Studio.
Бесплатный сервис позволяет писать тесты, поддерживает разные типы API.
Colab используют, чтобы создавать код на Python прямо в браузере.
Освоить новую профессию реально с нуля в любом возрасте, главное — мотивация.
Не выбирайте по принципу «чем проще, тем лучше» и уважайте желания ребенка.
Важнее опыт и проекты в портфолио, но иногда высшее образование все-таки нужно.
Сегодня удаленка доступна для разных сфер: ИТ, маркетинг, сервис, продажи.
Выбирайте по уровню спроса у работодателей и направлению в программировании.
20 фильмов и сериалов для тех, кому интересен мир информационных технологий.
Frontend-разработчик создает внешнюю — пользовательскую часть веб-ресурса.
Backend-разработчик отвечает за внутреннюю — серверную сторону веб-ресурса.
Спринты используют в долгих проектах и сложных продуктах.
Преимущества Python — понятный синтаксис и читаемость, готовые библиотеки.
Jupyter-ноутбуки применяют для визуализации данных в big data и data science.
Soft skills помогают развивать компетенции, осваивать новые тенденции в работе.
На Java разрабатывают всё: от приложений и ПО до технологий Big Data.