Удаление элемента из списка питон
Есть список из 30 одинаковых элементов. Пользователь вводит количество элементов которое нужно удалить из списка s и добавить в b . Если пользователь вводит число большее 15, то индексы списка выходят за пределы ( list index out of range ), если меньше 15, все работает нормально. Пробовал удалять с помощью pop и del . При использовании del [:cnt] нельзя удалить все элементы списка, поэтому этот вариант не подходит.
s = [ i for i in '1' * 30] b = [] cnt = int(input('введите кол-во элементов')) for j in range(cnt): b.append(s[j]) s.remove(s[j]) print(b)
Отслеживать
16k 4 4 золотых знака 19 19 серебряных знаков 30 30 бронзовых знаков
задан 5 июл 2022 в 6:56
1 1 1 бронзовый знак
4 ответа 4
Сортировка: Сброс на вариант по умолчанию
‘При использовании del [:cnt] нельзя удалить все элементы списка, поэтому этот вариант не подходит’
почему же не подходит, вроде работает, вот практически ваш код только без цикла:
s = [ i for i in '1' * 30] b = [] cnt = int(input('введите кол-во элементов: ')) b.extend(s[:cnt]) del s[:cnt] print(f'') print(f'') >>> out ''' введите кол-во элементов: 30 s = [] b = ['1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1']
Отслеживать
ответ дан 5 июл 2022 в 10:10
5,635 1 1 золотой знак 7 7 серебряных знаков 17 17 бронзовых знаков
Как было написано ранее, при удалении элемента из списка, список сдвигается к началу. В Вашем варианте вроде все нормально работает, т.к. элементы одинаковые, на самом деле при удалении нулевого элемента первый становится нулевым, второй первым. И при следующей итерации цикла Вы удаляете не первый, а второй элемент.
Для формирования начального списка Вы зря используете списковое включение, список можно создать простым повторением. И чтобы не использовать промежуточное звено для добавления элемента в новый список, проще использовать pop .
s = ['1'] * 30 b = [] cnt = int(input('введите кол-во элементов: ')) for i in range(cnt): b.append(s.pop(0)) print(f'') print(f'')
либо же заменить вторую строку и цикл списковым включением
b = [s.pop(0) for i in range(cnt)]
Однако стоит отметить, что вариант без цикла работает в разы быстрее.
Удалить элемент который введет пользователь из списка
Мне нужно — вывести сообщение:» если его нет в списке».
Нужно где то создать условие IF IN ELIF!?
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Удалить элемент с индексом, который введет пользователь
Удалить элемент с индексом, который введет пользователь после нажатия на кнопку KEY_UP. Как это.
Удалить определённую запись по номеру, который введёт пользователь
Всем привет! Очень надеюсь на вашу помощь. Моя задача удалить определённую запись по номеру.
Удалить из списка элемент, стоящий после элемента на который указывает пользователь
Нужно удалить из списка элемент, стоящий после элемента на который указывает пользователь.
Изменить тип списка и выбрать случайный элемент из списка, который ввел пользователь
Помогите пожалуйста изменить тип списка с integer в string. Я паскаль только изучаю и не могу.
Вывести имя в прямоугольник из символа, который введет сам пользователь
Не получается решить задачу: Вывести имя в прямоугольник из символа, который введет сам.
Автоматизируй это!
7054 / 4559 / 1207
Регистрация: 30.03.2015
Сообщений: 13,132
Записей в блоге: 29
Сообщение от Shelfer 
Нужно где то создать условие IF IN ELIF!?
да, проверяй что номер валидный
Регистрация: 02.02.2021
Сообщений: 17
Welemir1, а способов много ?
![]()
7279 / 4102 / 1794
Регистрация: 27.03.2020
Сообщений: 6,926
Shelfer,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
# - создать список с произвольными элементами # - удалить от туда элемент который введет пользователь # - если его нет, то вывести соответствующее сообщение password = [2, 3, 4, 5, 9] print('Здравствуйте! За какой номер столика хотели бы сесть : ') x = int(input()) while x not in password: print('такого столика у нас нет') print('хотите другой? да/нет : ') t = input() if t == 'нет' : print('пока') break print('За какой номер столика хотели бы сесть : ') x = int(input()) password.remove(x) print('К сожалению столик занят !')
Автоматизируй это!
![]()
7054 / 4559 / 1207
Регистрация: 30.03.2015
Сообщений: 13,132
Записей в блоге: 29
Shelfer, в программировании всегда много способов
3540 / 2144 / 566
Регистрация: 02.09.2015
Сообщений: 5,435
Сообщение от Welemir1 
в программировании всегда много способов
Так-то оно так, но из этой толчеи способов нужно выбирать, зачастую, самый эффективный, подходящий к условиям задачи. В этом, как раз, и заключается все искусство программирования. И в сухом остатке получаем не так много действительно хороших решений.
Например:
1) Поиск элемента в неотсортированном списке O(N) , удаление элемента — O(N) . Медленно, но поставленную задачу решает;
2) Если у нас будет m запросов на поиск/удаление элемента, то логично отсортировать список password и поддерживать порядок. Тогда поиск элемента будет занимать O(log(N)) , удаление элемента — O(N) => Итого: O(N * log(N) + m * (log(N) + N)) ;
3) Можно оптимизировать второе решение: не удалять из списка элемент, а записывать в другой и поддерживать порядок. Тогда удаление будет выполняться за O(K) , где K — количество удаленных элементов. Итог: O(N * log(N) + m * (log(N) + K)) .
4) Можем заметить, что в этой задаче логично задействовать set . Тогда асимтотика получает колоссальный буст в скорости: O(N) — создание множества, O(1) — поиск, O(1) — удаление.
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Необходимо суммировать все нечетные числа в диапазоне который введет пользователь
Необходимо суммировать все нечетные числа в диапазоне который введет пользователь На языке Си

Необходимо суммировать все нечётные целые числа в диапазоне, который введёт пользователь с клавиатуры
Дана задача: Необходимо суммировать все нечётные целые числа в диапазоне, который введёт.
Удалить из списка элемент перед каждым элементом, который имеет значение -2 (STL)
Создать линейный однонаправленный список из действительных числе. Удалить из списка элемент перед.
Пользователь вводит целое число Вывести его в СС которую введет пользователь до 16СС
7) Пользователь вводит целое число. Вывести его в СС которую введет пользователь до 16СС
Как удалить элемент из списка с помощью Python
В Python списки представляют собой коллекции элементов, которые могут быть изменены. В этой статье мы рассмотрим, как удалить элемент из списка с помощью Python.
Удаление элемента по индексу
Первый способ удаления элемента из списка — это удаление элемента по индексу. Для этого нужно использовать ключевое слово del и указать индекс элемента, который нужно удалить. Вот пример:
my_list = ['apple', 'banana', 'orange', 'pear'] del my_list[1] # удалить второй элемент из списка (banana) print(my_list) # ['apple', 'orange', 'pear']
В этом примере мы удаляем второй элемент из списка (banana) с помощью ключевого слова del и указываем его индекс (1).
Удаление элемента по значению
Второй способ удаления элемента из списка — это удаление элемента по его значению. Для этого нужно использовать метод remove() и указать значение элемента, который нужно удалить. Вот пример:
my_list = ['apple', 'banana', 'orange', 'pear'] my_list.remove('banana') # удалить элемент со значением "banana" print(my_list) # ['apple', 'orange', 'pear']
В этом примере мы удаляем элемент со значением «banana» с помощью метода remove() .
Удаление элементов с помощью цикла
Если вы хотите удалить несколько элементов из списка, вы можете использовать цикл. Вот пример:
my_list = ['apple', 'banana', 'orange', 'pear'] items_to_remove = ['banana', 'pear'] for item in items_to_remove: my_list.remove(item) print(my_list) # ['apple', 'orange']
В этом примере мы создали список элементов, которые нужно удалить (items_to_remove), и использовали цикл, чтобы удалить каждый элемент из этого списка с помощью метода remove() .
Хорошего настроения и удачных вам проектов! 🙂
БОНУСЫ
Бесплатные курс по профессии “Python-разработчик”
- PYTHON (44 урока + практика) — https://free-python-course.kaziamov.com
- GIT (15 уроков + практика) — https://free-git-course.kaziamov.com
- LINUX (19 уроков + практика) — https://free-linux-course.kaziamov.com
- Как найти работу в IT (14 уроков) — https://how-find-job-course.kaziamov.com
- Как выучить английский (10 уроков) — https://how-learn-english.kaziamov.com
- HTML+CSS (12 уроков + практика) — https://free-html-css-course.kaziamov.com
Как в Python удалить дубли из списка

Как можно проверить, есть ли в списке дубликаты и вернуть новый список без дублей? Это один самых популярных вопросов на собеседованиях Python разработчиков.
Распространенный подход к получению коллекции уникальных элементов заключается в использовании множеств (set). set – это неупорядоченные коллекции различных объектов. Чтобы создать множество из любой итерируемой коллекции, вы можете просто передать ее встроенной функции set(). Если позже вам снова понадобится список, вы можете аналогичным образом передать множество функции list(). Приведем примеры:
>>> ls = ["Питон", "Пайтон", "Питон", "Пайтон", "Python", "Python"] >>> list(set(ls)) ["Python", "Питон", "Пайтон"] >>> s = ["Питон", "Пайтон"] >>> list(set(ls) - set(s)) # разность двух множеств: ["Python"]
Как видно из примера, первоначальный порядок элементов не сохраняется. Множества сами по себе являются неупорядоченными коллекциями, поэтому порядок теряется. При преобразовании множества обратно в список создается произвольный порядок элементов.
Если важен порядок, то вам придется использовать другой механизм. Очень распространенным решением является использование OrderedDict для сохранения порядка ключей во время вставки:
>>> from collections import OrderedDict >>> ls = [1, 2, 3, 2, 3, 5, 6, 7] >>> list(OrderedDict.fromkeys(ls)) [1, 2, 3, 5, 6, 7]
Начиная с Python 3.7, встроенный словарь гарантированно сохраняет порядок вставки, поэтому вы также можете использовать его напрямую, если используете Python 3.7 или более позднюю версию:
>>> list(dict.fromkeys(ls)) [1, 2, 3, 5, 6, 7]
