Как добавить элементы в список python?
Питон последний, винда, пишу в блокноте и запускаю через консоль. Список из строк, надо докидывать по одному в цикле и иногда сразу пачкой из другого списка. Учусь щас по ролику на ютубе.
Ваш вопрос
Питон последний, винда, пишу в блокноте и запускаю через консоль. Список из строк, надо докидывать по одному в цикле и иногда сразу пачкой из другого списка. Учусь щас по ролику на ютубе.
4.20
Вывод: для пачки значений бери extend, а не append в цикле. Причины ниже.
append добавляет ровно один элемент, каким бы он ни был. Сунешь туда список — получишь список внутри списка, а не его элементы по отдельности, это главная засада, на которой все спотыкаются в начале.
extend разворачивает то, что ты в неё передал, и кладет элементы по одному в конец исходного списка, поэтому список.extend([1, 2, 3]) добавит именно три числа, а не один вложенный список из трех чисел.
Плюс между списками тоже работает, список + [1, 2, 3] создаст новый список, но это чуть медленнее на больших объемах, потому что питону приходится собирать целиком новый объект в памяти вместо того чтобы просто дописать в конец существующего.
Для одного элемента — список.append(значение). Для нескольких сразу — список.extend([1, 2, 3]) добавит все элементы по отдельности в конец, а не как один вложенный список, как это сделал бы append со списком внутри. Есть и способ через плюс: список = список + [1, 2, 3], но extend обычно быстрее и привычнее для этой задачи.
Пока нет премиум-вопросов в подборке
Не нашли то, что искали?
Задайте свой вопрос
Лучший ответ
v4-flash
v4-flash
Как добавить элементы в список python?
Один элемент в конец — список.append(x). Работает всегда, кладет x как есть, без разбора, что внутри x лежит.
Несколько элементов из другого списка — список.extend([a, b, c]) или короче через оператор += : список += [a, b, c], оба варианта равнозначны по результату.
Частая ошибка новичков — append вместо extend, когда добавляют сразу пачку значений. список.append([a, b, c]) положит в конец не три элемента, а один — сам список [a, b, c] целиком, как один вложенный объект. Потом длина основного списка растет не так, как ожидалось, и код, который перебирает элементы, натыкается на список там, где ждал число.
Вставка не в конец, а в определенную позицию — список.insert(индекс, значение), сдвигает всё, что было после этой позиции, на один шаг вправо.
Объединение двух списков без изменения исходных — новый = список1 + список2, создает третий список, оба исходных остаются нетронутыми, это отличается от extend, которая меняет список на месте.
Добавление элементов в цикле, если источник — не готовый список, а что-то, что вычисляется по ходу — обычный список.append(значение) внутри цикла for, это стандартный и читаемый способ построить список постепенно, никакой магии тут не нужно.
Если элементов действительно много и код должен работать быстро — списковое включение, [функция(x) for x in источник], обычно быстрее и короче ручного цикла с append, хотя для полной ясности кода иногда явный цикл читается проще, особенно если внутри сложная логика с условиями.