Перейти к содержимому

Как удалить определенные элементы из списка python

  • автор:

Удаление элементов из списка по условию. Как это работает?

Имеется кусок кода, который должен удалять все элементы из списка, которые меньше 5. Однако этот код работает не верно. Можете ли вы без или с использованием консоли указать где ошибка и как нужно делать.

nums = [1,2,5,10,3,100,9,24] for i in nums: if i < 5: nums.remove(i) nums >>>[2, 5, 10, 100, 9, 24]

Проверяет ли этот код на то, что элемент по своему значению менешь 5? В первой итерации 1 конечно меньше 5. Затем программа удаляет единицу, но в тоже время путаются индексы. На второй итерации она проверяет уже 5 а не 2. От этого и ошибка.

Для решения этой задачи можно использовать несколько вариантов.

Первый: создать пустой массив и дописывать в него, а именно:

nums = [1,2,5,10,3,100,9,24] newnums = [] for i in nums: if i >= 5: newnums.append(i) newnums >>>[5, 10, 100, 9, 24]

Второй: Используя list comprehension

nums = [1,2,5,10,3,100,9,24] newnums = [i for i in nums if i>=5] newnums >>>[5, 10, 100, 9, 24]

Нам нравится больше спосом с list comprehension. Но решать всегда вам.

Как удалить определенный элемент из списка Python по индексу

Если Вы решили начать изучать программирование особенно Python то после знакомства с переменными, циклами и функциями стоить начать изучать списки. Списки очень важны и с ними нужно обязательно уметь работать, составлять, удалять, добавлять, выводить элементы. На самом деле в этом ничего сложного нет, просто нужно знать основные методы, которые позволяют производить различные манипуляции со списками. В сегодняшней статье посмотрим как можно удалить конкретный элемент списка, как удалить элемент по индексу, как удалить все элементы, как удалить первый элемент списка. Все это можно сделать с помощью следующих методов clear, pop, remove, del.

Удаление конкретного элемента списка в Python

Давайте для начала попробуем удалить конкретный элемент списка. Для этого потребуется использование метода remove. Синтаксис очень простой

lucky_numbers.remove(Элемент который нужно удалить)

В скобках указываем элемент который хотим удалить.

lucky_numbers = [1, 2, 5, 55, 68, 88, 89]
print(lucky_numbers)
lucky_numbers.remove(55)
print(lucky_numbers)

Python удалить элемент списка

Можно запрашивать у пользователя конкретный элемент для удаления.

lucky_numbers = [1, 2, 5, 55, 68, 88, 89] print(lucky_numbers) numbers = input() print('Удаляем из списка число 'numbers) lucky_numbers.remove(int(numbers)) print(lucky_numbers) 

Тут все просто сначала выводятся все элементы списка, после чего нужно ввести элемент который нужно удалить.

Как удалить определенный элемент из списка Python по индексу

Далее выводиться сообщение о том что элемент удален и отображаются оставшиеся элементы в списке.

Как удалить элемент из списка Python

Если список состоит из чисел то вводимые значение нужно обязательно преобразовать с помощью функции int() если этого не сделать то будет выводиться ошибка, о том что элемент в списке не найден.

lucky_numbers = [1, 2, 5, 55, 68, 88, 89] print(lucky_numbers) numbers = input() print('Удаляем из списка число 'numbers) lucky_numbers.remove(int(numbers)) print(lucky_numbers) 

Удаление конкретного элемента списка в Python

Если в список состоит из строк то тут ничего делать не нужно.

Удаление элемента списка в Python

Как удалить элемент списка по индексу Python

Теперь рассмотрим ситуацию когда нужно удалить элемент с определенным индексом, в этом случае поможет метод pop().

lucky_numbers = [1, 2, 5, 55, 68, 88, 89] print(lucky_numbers) index = input() print('Удаляем из списка число с индексом'index) lucky_numbers.pop(int(numbers)) print(lucky_numbers) 

Для примере введем индекс «1» в этом случае из списка удалилось число «2», так как индексы начинаются с «0», думаю об этом Вы уже знаете.

Как удалить элемент списка по индексу Python

Удалить все элементы списка поможет метод clear,

lucky_numbers = [1, 2, 5, 55, 68, 88, 89] print(lucky_numbers) lucky_numbers.clear() print(lucky_numbers) 

Удалить первый элемент списка можно с помощью методов remove(), pop() нужно только передать индекс 0.

Удалить несколько элементов списка можно с помощью метода del(), достаточно указать диапазон del ИмяСписка[1:4]

Удаление нескольких элементов из списка

Мне из списка необходимо удалить 0 и 2 элементы: , . Каким самым простым способом можно это сделать? Менять местами я не могу, но я задал список — запрос API. Перечисление индексов через запятую в команде del или remove не работают. Через двоеточие — не вариант, потому что они не по порядку. Я записал так:

balances = [,,,] del (balances[0], balances[1]) 

Получается, что я два раза обращаюсь к спискам, т.е. к API. Это замедляет работу программы, так ведь?

Отслеживать
51.6k 200 200 золотых знаков 61 61 серебряный знак 242 242 бронзовых знака
задан 25 апр 2018 в 20:08
169 2 2 золотых знака 5 5 серебряных знаков 12 12 бронзовых знаков
А что мешает просто создать новый список с нужными значениями? balances = [balances[1], balances[3]
25 апр 2018 в 20:19
В balances на самом деле элементов больше 4
25 апр 2018 в 20:20
Но вы точно знаете позиции элементов которые нужно удалить так?
25 апр 2018 в 20:24
25 апр 2018 в 20:26

3 ответа 3

Сортировка: Сброс на вариант по умолчанию

Я бы сделал так:

In [58]: balances = [,,,] In [59]: del_idx = In [60]: balances[:] = [x for i,x in enumerate(balances) if i not in del_idx] In [61]: balances Out[61]: [, ] 

Отслеживать
ответ дан 25 апр 2018 в 20:48
MaxU — stand with Ukraine MaxU — stand with Ukraine
149k 12 12 золотых знаков 59 59 серебряных знаков 132 132 бронзовых знака
26 апр 2018 в 13:24
@gil9red, ага, спасибо! 🙂
26 апр 2018 в 13:34

Что касается множественного удаления. У вас есть исходный список, а так же вы знаете позиции элементов этого списка которые нужно удалить. Решение «в лоб».

array = [1,2,2,3,3,4,5,6] # Создаем список ненужных значений unnecessary_values = [a[0], a[2]] for value in unnecessary_values: # Проходим по списку и удаляем. array.remove(value) 

Что касается ответа на второй вопрос, все зависит от реализации API, скорее всего вы просто передаете результаты работы функции в список. Список с результатами находится в памяти компьютера и не выполняет запросов к API.

Удаление элемента из списка по шаблону

Коллеги всем доброго времени суток.
Подскажите в чем ошибка:
Имеется список такого формат:
[‘hostname1′,’hostname2′,’192.168.1.1′,’hostname3′,’192.168.1.254′,’hostname4′,’h ostname5’]
Как удалить из списка ip адреса?
прохожу по списку

1 2 3
for ip in range(len(host_name)): value=re.search("\d.\d.\d.\d",host_name[ip]) if (value==host_name[ip]

что дальше сделать не могу понять
Вообще этот список формируется из активных(которые пингуются, получаю список ip адресов) хостов некой сети, далее на основе этого списка получаю имена данных хостов, но те которые не отрезолвились это сетевые девайсы(роутеры, камеры и т.д). Их нужно удалить.
А далее по этим хостам будет вывод уз, под которой авторизовались на хосте с помощью команды qwinsta /server:hostname.
Очень много пользователей в домене авторизуются под локальными уз зачем, не понятно.
Ах да, я не системный администратор в компании, сотрудник иб, нашел только такой способ решения проблемы, насколько он верный не могу сказать, но в прицепе он меня устраивает. Пытался на powershelle что-то подобное реализовать, не вышло.
Есть предположение что данная команда qwinsta /server:hostname вернет ответ в случае если на удаленном госте работает служба RPC.

Лучшие ответы ( 2 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Вставка нового элемента в список, удаление элемента из списка, просмотра содержимого списка
очень нужно:tender: 1. Разработать подпрограммы, реализующие основные операции обработки линейного.

Замена текста по шаблону и удаление внешних тегов, относящихся к найденному шаблону
Привет всем, Есть небольшой html файл в котором надо искать вот такие шаблоны: @130, @131, @132.

Удаление элемента, стоящего посередине списка (если длина списка нечетна)
Написать функцию, которая удаляет из списка элемент, стоящий в середине (удалённый от начала и.

удаление из списка элемента и редактирование списка. Решаемо но не для моего глупого мозга
Ребята вот што у меня есть попробуйте из этого што нить сварганить плиз срочно. program.

4459 / 3212 / 1125
Регистрация: 21.03.2016
Сообщений: 7,949

Лучший ответ

Сообщение было отмечено usmersn как решение

Решение

вам это нужно?

1 2 3 4 5
host_name = ['hostname1','hostname2','192.168.1.1', 'hostname3','192.168.1 .254','hostname4','hostname5' ] filter_host =[ip for ip in host_name if len(ip.split('.')) != 4] print(filter_host)

[‘hostname1’, ‘hostname2’, ‘hostname3’, ‘hostname4’, ‘hostname5’]
196 / 162 / 41
Регистрация: 13.05.2019
Сообщений: 833

Лучший ответ

Сообщение было отмечено usmersn как решение

Решение

1 2 3 4 5 6 7 8 9
ips=['hostname1','hostname2','192.168.1.1','hostname3','192.168.1.254','hostname4','hostname5'] def isip(s): sp=s.split(".") return not (len(sp)==4 and all(i.isdigit() for i in sp) and all(0int(i)256 for i in sp)) ips2=list(filter(isip, ips)) print(ips2)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *