Я хочу написать что-то, что удаляет определенный элемент из массива. Я знаю, что мне нужно for
перебрать массив, чтобы найти элемент, который соответствует содержимому.
Допустим, у меня есть массив писем, и я хочу избавиться от элемента, который соответствует какой-либо строке письма.
Я на самом деле хотел бы использовать структуру цикла for, потому что мне нужно использовать тот же индекс и для других массивов.
Вот код, который у меня есть:
for index, item in emails:
if emails[index] == 'something@something.com':
emails.pop(index)
otherarray.pop(index)
list.remove(x)
?Ответы:
Вам не нужно перебирать массив. Просто:
Это удалит первый случай, соответствующий строке.
РЕДАКТИРОВАТЬ: После редактирования вам все равно не нужно повторять. Просто сделать:
источник
Использование
filter()
иlambda
обеспечит аккуратный и краткий метод удаления нежелательных значений:Это не меняет электронные письма. Он создает новый список newEmails, содержащий только элементы, для которых анонимная функция вернула True.
источник
Ваш цикл for неправильный, если вам нужен индекс в цикле for:
В вашем случае, решение Богдана в порядке, но выбор структуры данных не так хорош. Неудобно вести эти два списка с данными одного, связанными с данными другого по одному и тому же индексу.
Список переписки (электронная почта, другие данные) может быть лучше, или подсказка с электронной почтой в качестве ключа.
источник
Разумный способ сделать это состоит в том, чтобы использовать
zip()
и выражение списка / выражения генератора:Кроме того, если вы не используете
array.array()
илиnumpy.array()
, то, скорее всего, вы используете[]
илиlist()
, которые дают вам списки, а не массивы. Не то же самое.источник
Существует альтернативное решение этой проблемы, которое также касается дублирующих совпадений.
Мы начинаем с 2 списка одинаковой длины:
emails
,otherarray
. Цель состоит в том, чтобы удалить элементы из обоих списков для каждого индекса,i
гдеemails[i] == 'something@something.com'
.Это может быть достигнуто с помощью понимания списка, а затем разделения через
zip
:источник