5 способов создания списков в Python: от простых до продвинутых
Для кого эта статья:
- Начинающие программисты, изучающие Python
- Студенты и обучающиеся на курсах програмирования
Разработчики, желающие улучшить свои навыки работы со списками в Python
Списки в Python — это фундаментальный строительный блок, без которого практически невозможно написать полноценный код. Когда я впервые столкнулся с ними, меня поразила их гибкость: в одном списке можно хранить числа, строки и даже другие списки! 🐍 Но как именно их создать? Многие новички застревают на этом шаге, теряясь среди различных синтаксических конструкций. В этой статье мы рассмотрим пять проверенных методов создания списков в Python — от самых базовых до элегантных решений, которые сэкономят вам десятки строк кода.
Если вы только начинаете свой путь в программировании или хотите структурировать свои знания Python, курс Обучение Python-разработке от Skypro станет вашим надежным проводником. На курсе вы не только освоите работу со списками и другими структурами данных, но и научитесь создавать полноценные веб-приложения. Практические задания и поддержка менторов помогут вам преодолеть типичные трудности новичков и выйти на профессиональный уровень.
Создание списков в Python: базовые концепции для новичков
Список в Python — это упорядоченная коллекция элементов, которая может содержать данные разных типов. Это один из самых универсальных типов данных в языке, который можно изменять, сортировать, расширять и обрабатывать множеством способов.
Прежде чем погрузиться в методы создания списков, важно понять их ключевые характеристики:
- Списки являются упорядоченными — порядок элементов сохраняется при добавлении
- Списки изменяемы — можно добавлять, удалять и модифицировать элементы
- Списки могут содержать дублирующиеся значения
- Элементы списка индексируются, начиная с нуля
- Списки могут содержать элементы разных типов одновременно
В Python работа со списками интуитивно понятна, что делает их идеальным инструментом даже для начинающих программистов. Давайте рассмотрим, какие способы создания списков предлагает этот язык программирования. 📊
Александр Петров, Python-разработчик
Когда я только начинал работать с Python после C++, концепция списков казалась мне слишком простой. "Разве может что-то настолько простое быть мощным?" — думал я. Как-то раз мне нужно было обработать большой набор текстовых данных — извлечь все email-адреса из документов. В C++ это потребовало бы сотни строк кода с ручным управлением памятью. В Python я справился буквально несколькими строками:
PythonСкопировать кодemails = [] for line in document: if "@" in line: emails.append(line.strip())Этот момент стал для меня переломным. Я понял, что простота и гибкость списков в Python — это не недостаток, а огромное преимущество. Теперь я использую списки практически в каждом своем проекте, и они никогда не подводят.

Метод №1: Использование квадратных скобок (литералов)
Самый простой и распространенный способ создания списка в Python — использование квадратных скобок. Этот метод также известен как литерал списка.
Рассмотрим несколько примеров создания списков с помощью квадратных скобок:
# Пустой список
empty_list = []
# Список чисел
numbers = [1, 2, 3, 4, 5]
# Список строк
fruits = ["яблоко", "банан", "апельсин"]
# Смешанный список (разные типы данных)
mixed_list = [1, "привет", 3.14, True]
# Вложенный список
nested_list = [1, [2, 3], ["a", "b"]]
Преимущество этого метода — его простота и читабельность. Вы буквально видите содержимое списка в момент его создания. Это особенно удобно, когда вы заранее знаете, какие элементы должны входить в список.
Несколько важных моментов при использовании литералов списков:
- Элементы разделяются запятыми
- Можно создавать пустые списки с помощью пустых квадратных скобок []
- Вы можете включать литералы списков внутрь других списков, создавая многомерные структуры
| Тип списка | Синтаксис | Пример |
|---|---|---|
| Пустой список | [] | empty = [] |
| Список целых чисел | [int, int, ...] | nums = [1, 2, 3] |
| Список строк | ["str", "str", ...] | words = ["hello", "world"] |
| Смешанный список | [value1, value2, ...] | mix = [1, "two", 3.0] |
| Вложенный список | [[...], [...], ...] | nested = [[1, 2], [3, 4]] |
Этот метод создания списков следует использовать, когда вы точно знаете содержимое списка во время написания кода. Для динамического создания списков существуют более эффективные методы, которые мы рассмотрим далее. 🔍
Метод №2: Функция list() для преобразования данных
Встроенная функция list() — мощный инструмент для создания списков из других итерируемых объектов. Это особенно полезно, когда у вас уже есть данные в другом формате, и вы хотите преобразовать их в список.
Вот как работает функция list() с различными типами данных:
# Создание списка из строки (каждый символ становится элементом)
chars = list("Python")
print(chars) # ['P', 'y', 't', 'h', 'o', 'n']
# Создание списка из кортежа
tuple_example = (1, 2, 3)
list_from_tuple = list(tuple_example)
print(list_from_tuple) # [1, 2, 3]
# Создание списка из множества (set)
set_example = {1, 2, 3, 2, 1} # дубликаты будут удалены в множестве
list_from_set = list(set_example)
print(list_from_set) # [1, 2, 3] (порядок может отличаться)
# Создание списка из словаря (только ключи)
dict_example = {'a': 1, 'b': 2, 'c': 3}
list_from_dict = list(dict_example)
print(list_from_dict) # ['a', 'b', 'c']
# Создание пустого списка
empty_list = list()
print(empty_list) # []
Функция list() особенно полезна в следующих случаях:
- Когда нужно преобразовать неизменяемый тип данных (например, кортеж) в изменяемый список
- Для разбиения строки на отдельные символы
- При необходимости получить список ключей словаря
- Чтобы удалить дубликаты из списка (преобразовав его сначала в множество, а затем обратно в список)
Важно помнить, что list() создает новый объект списка, а не изменяет существующий. Это может быть важно при работе с большими объемами данных, когда необходимо контролировать использование памяти. 🔄
Мария Иванова, преподаватель программирования
На одном из моих занятий по Python студент долго не мог понять, зачем нужна функция list(), если есть квадратные скобки. "Это же просто лишние символы," — говорил он. Тогда я дала ему задачу: создать программу для анализа текста, которая подсчитывает, сколько раз каждая буква встречается в тексте.
Студент начал с создания 26 переменных для каждой буквы алфавита. Это выглядело примерно так:
PythonСкопировать кодa_count = 0 b_count = 0 ...Через полчаса он был в отчаянии. Тогда я показала ему решение с использованием функции list():
PythonСкопировать кодtext = "Hello, World!" char_list = list(text.lower()) unique_chars = list(set(char_list)) for char in unique_chars: if char.isalpha(): print(f"Буква '{char}' встречается {char_list.count(char)} раз(а)")Глаза студента загорелись. "Это же так просто!", — воскликнул он. С тех пор я всегда использую этот пример, чтобы показать, как функция list() может значительно упростить код и сделать его более элегантным.
Метод №3: Генераторы списков — элегантное решение
Генераторы списков (List Comprehensions) — один из самых мощных и элегантных способов создания списков в Python. Они позволяют написать компактный код для создания списка на основе другого списка или итерируемого объекта, часто с применением фильтрации и трансформации данных. 🚀
Базовый синтаксис генератора списков выглядит так:
new_list = [expression for item in iterable if condition]
Давайте рассмотрим примеры, демонстрирующие мощь генераторов списков:
# Создание списка квадратов чисел от 0 до 9
squares = [x**2 for x in range(10)]
print(squares) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
# Создание списка только четных чисел
even_numbers = [x for x in range(1, 11) if x % 2 == 0]
print(even_numbers) # [2, 4, 6, 8, 10]
# Преобразование строк в верхний регистр
words = ["apple", "banana", "cherry"]
upper_words = [word.upper() for word in words]
print(upper_words) # ['APPLE', 'BANANA', 'CHERRY']
# Создание плоского списка из вложенного списка
nested_list = [[1, 2], [3, 4], [5, 6]]
flat_list = [num for sublist in nested_list for num in sublist]
print(flat_list) # [1, 2, 3, 4, 5, 6]
# Создание списка кортежей (x, y)
coordinates = [(x, y) for x in range(3) for y in range(2)]
print(coordinates) # [(0, 0), (0, 1), (1, 0), (1, 1), (2, 0), (2, 1)]
Генераторы списков предлагают ряд преимуществ по сравнению с традиционными циклами:
- Компактность — один-две строки вместо нескольких с циклами for
- Читаемость — при правильном использовании код становится более понятным
- Производительность — генераторы списков обычно работают быстрее, чем эквивалентные циклы
- Выразительность — можно объединять фильтрацию и преобразования в одном выражении
| Тип задачи | Традиционный цикл | Генератор списков |
|---|---|---|
| Квадраты чисел |
|
|
| Фильтрация четных |
|
|
| Преобразование строк |
|
|
Однако стоит помнить, что слишком сложные генераторы списков могут снизить читаемость кода. Если выражение становится слишком сложным, лучше использовать обычный цикл for или разбить задачу на несколько более простых генераторов списков.
Метод №4: Методы append() и extend() для наполнения
Когда вам нужно создать список поэтапно, добавляя элементы один за другим или группами, методы append() и extend() станут вашими незаменимыми помощниками. Эти методы позволяют динамически наполнять список в процессе выполнения программы. 📈
Метод append() добавляет один элемент в конец списка:
# Создаем пустой список
fruits = []
# Добавляем элементы по одному
fruits.append("яблоко")
fruits.append("банан")
fruits.append("апельсин")
print(fruits) # ['яблоко', 'банан', 'апельсин']
# Можно добавить любой тип данных
fruits.append(123) # Добавляем число
fruits.append(["груша", "киви"]) # Добавляем список как один элемент
print(fruits) # ['яблоко', 'банан', 'апельсин', 123, ['груша', 'киви']]
Метод extend() добавляет все элементы из итерируемого объекта в конец списка:
# Создаем начальный список
vegetables = ["морковь", "картофель"]
# Добавляем элементы из другого списка
more_vegetables = ["лук", "чеснок"]
vegetables.extend(more_vegetables)
print(vegetables) # ['морковь', 'картофель', 'лук', 'чеснок']
# Можно добавить элементы из других итерируемых объектов
vegetables.extend("томат") # Добавляет каждый символ как отдельный элемент
print(vegetables) # ['морковь', 'картофель', 'лук', 'чеснок', 'т', 'о', 'м', 'а', 'т']
Ключевые различия между append() и extend():
append()добавляет один объект как единый элемент, даже если это коллекцияextend()добавляет каждый элемент из итерируемого объекта по отдельностиappend()всегда добавляет только один элемент,extend()может добавить множество- При добавлении списка в список с
append()создается вложенный список
Когда стоит использовать эти методы для создания списков:
- Когда элементы становятся доступными постепенно (например, при чтении из файла)
- В циклах, когда нужно накапливать результаты
- Когда список создается на основе пользовательского ввода
- При необходимости условно добавлять элементы в зависимости от логики программы
Пример практического использования в цикле:
# Создаем список четных чисел от 0 до 20
even_numbers = []
for i in range(21):
if i % 2 == 0:
even_numbers.append(i)
print(even_numbers) # [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
Важно понимать, что методы append() и extend() изменяют существующий список, а не создают новый. Это отличает их от других методов создания списков, которые мы рассмотрели ранее. 🔧
Метод №5: Создание списков с помощью split() и range()
В арсенале Python есть еще два мощных инструмента для создания списков: метод строк split() и функция range(). Эти инструменты особенно полезны при работе с текстовыми данными и числовыми последовательностями. 🔢
Метод split() для создания списков из строк
Метод split() разбивает строку на части по указанному разделителю и возвращает список полученных подстрок:
# Разбиение строки по пробелам (по умолчанию)
sentence = "Python это мощный язык программирования"
words = sentence.split()
print(words) # ['Python', 'это', 'мощный', 'язык', 'программирования']
# Разбиение строки по запятой
csv_data = "яблоко,банан,груша,апельсин"
fruits = csv_data.split(",")
print(fruits) # ['яблоко', 'банан', 'груша', 'апельсин']
# Разбиение строки с ограничением количества разделений
phone_number = "8-800-555-35-35"
parts = phone_number.split("-", 2)
print(parts) # ['8', '800', '555-35-35']
# Разбиение многострочного текста на строки
multiline_text = """Первая строка
Вторая строка
Третья строка"""
lines = multiline_text.splitlines()
print(lines) # ['Первая строка', 'Вторая строка', 'Третья строка']
Метод split() часто используется для:
- Обработки CSV-данных и других структурированных текстовых форматов
- Разбиения введенного пользователем текста на слова или команды
- Парсинга конфигурационных файлов и логов
- Извлечения данных из строковых представлений
Функция range() для создания числовых последовательностей
Функция range() генерирует последовательность чисел, которую легко превратить в список:
# Создание списка чисел от 0 до 9
numbers = list(range(10))
print(numbers) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# Создание списка с указанием начала и конца диапазона
start_end = list(range(5, 10))
print(start_end) # [5, 6, 7, 8, 9]
# Создание списка с указанием шага
step = list(range(0, 30, 5))
print(step) # [0, 5, 10, 15, 20, 25]
# Создание списка в обратном порядке
reverse = list(range(10, 0, -1))
print(reverse) # [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
Функция range() особенно полезна для:
- Создания индексированных списков
- Генерации последовательностей чисел с определенным шагом
- Использования в циклах for при обходе списков по индексам
- Создания числовых последовательностей для дальнейших вычислений
Комбинируя split() и range(), можно создавать сложные структуры данных:
# Создание матрицы размером 3x3
matrix = [list(range(i, i+3)) for i in range(0, 9, 3)]
print(matrix) # [[0, 1, 2], [3, 4, 5], [6, 7, 8]]
# Парсинг и преобразование числовых данных
numeric_string = "10 20 30 40 50"
numbers = [int(x) for x in numeric_string.split()]
print(numbers) # [10, 20, 30, 40, 50]
Эти методы создания списков демонстрируют гибкость и мощь Python при работе с данными различных типов. Они позволяют легко преобразовывать информацию из одного формата в другой и манипулировать ею для решения конкретных задач. 📊
Освоив эти пять методов создания списков, вы значительно расширите свой арсенал программиста на Python. От простых литералов до элегантных генераторов списков — каждый метод имеет свои преимущества в конкретных сценариях. Выбирайте тот, который лучше всего подходит для вашей задачи, учитывая читаемость кода и производительность. Помните: хороший код не только работает, но и говорит о своем предназначении другим разработчикам (и вам самим через несколько месяцев). Списки — это фундамент Python, и мастерство в их создании и обработке станет вашим козырем в разработке эффективных программ.
Читайте также
- Метод append() в Python: как эффективно добавлять элементы в список
- Метод del в Python: эффективное управление памятью и коллекциями
- 5 способов очистить список в Python: от clear() до срезов
- Python: 3 метода удаления элементов из списков – их сравнение
- Python метод append(): полное руководство для работы со списками
- Метод extend() в Python: как эффективно расширять списки данных
- Python: освой list comprehension и пиши код эффективнее – 7 техник
- 7 техник ускорения Python-кода при работе со списками – оптимизация
- 5 мощных техник объединения списков в Python: эффективный код
- Python сортировка: sort() vs sorted() – когда и что использовать


