Удаление элементов из массива
Удаление из массива элементов
Написать программу удаления из массива элементов, равных 4.
Удаление повторяющихся элементов из упорядоченного массива
Как (не используя set) в отсортированном массиве удалить повторяющиеся элементы? Как проверить, что.

Удаление частей элементов массива
Коллеги, добрый вечер! Есть одна задача, которую, как мне кажется, я решаю слишком неоптимально.
1039 / 309 / 76
Регистрация: 16.03.2020
Сообщений: 945
1 2 3 4 5 6 7
def silly_remove(l: list, element) -> list: result = [] for el in l: if el != element: result.append(el) return result
Добавлено через 3 минуты
А если прямо нормально надо сделать, то
1 2 3 4 5 6 7 8 9 10
def silly_remove(l: list, element, counter=1) -> list: result = [] c = 0 for el in l: if el != element and (c counter or counter == 0): result.append(el) else: c += 1 return result if result != l else None
Так будет возвращаться None если элемента нет, а также по умолчанию удаляется только 1 элемент, а не все. Counter отвечает за количество удаляющихся элементов, чтобы удалить всё надо поставить counter равный 0
Добавлено через 1 минуту
При этом надо понимать, что тут возвращается новый список, а не изменяется старый, т.е. вместо
l = [1,2,3,4,5,6,7,8,9,0] l.remove(2)
Как при использовании встроенного метода, с этой функцией надо
l = silly_remove(l, 2)
Добавлено через 5 минут
Сообщение от Шаня21 
встроенные функции
А если append тоже считается «встроенной функцией», то
1 2 3 4 5 6 7 8 9 10 11 12 13 14
def silly_append(l: list, element) -> list: return l + element def silly_remove(l: list, element, counter=1) -> list: result = [] c = 0 for el in l: if el != element and (c counter or counter == 0): result = silly_append(result, el) else: c += 1 return result if result != l else None
Добавлено через 1 минуту
Хотя тут я переборщил, проще будет сразу
1 2 3 4
def silly_remove(l, element): . result += el # 10 строчка из кода выше .
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Одномерные массивы. Вставка, удаление элементов массива. Перестановка элементов массива. Сортировка массива методом пузырька
Помогите пожалуйста! Дан массив, состоящий из N букв латинского алфавита а) Заполнить массив.

Произведение положительных элементов массива, сумма элементов массива, удаление четных элементов
в одномерном массиве состоящим из n элементов вычислить: произведение положительных элементов.
Удаление четных элементов массива,больших среднего арифметического всех элементов массива
Доброго времени суток! Помогите пожалуйста) Вот задание:Из массива удалить четные элементы.

Удаление элементов массива кратных своим порядковым номерам и удаление их путем сдвига вперед
Ребята, всем привет. Дистанционная практика (связи с короновирусом) дает о себе знать. Ответ на.
Удаление из одного массива элементов второго массива и запись результата в третий
Есть массив masA (длина lenA), есть массив masB (длина lenB). Необходимо из массива masA удалить.

Удаление элементов одномерного массива, больших последнего элемента этого массива
составьте программу удаления элементов одномерного массива A(N) больших последнего элемента этого.
Удаление из массива отрицательных элементов и элементов в записи которых есть цифра 5
Здравствуйте! Помогите, пожалуйста, решить данную задачу: Дан массив, в котором все элементы.
Как удалить элемент массива в питоне?
Код не работает, т.к. инструкция del не удаляет элемент, а уменьшает число ссылок на него на 1, del a означает, что нужно уменьшить число ссылок на элемент списка, на который ссылается a , но т.к. в списке остается ссылка на этот элемент, то он никуда не удаляется.
Отслеживать
ответ дан 19 фев 2012 в 15:43
616 3 3 серебряных знака 8 8 бронзовых знаков
Странная логика у вашего скрипта =). Но всеже.
Во время итерации по массивам в питоне не допускается удаление элементов. Для этого либо сделайте копию списка — massiv[:], либо итерируйте по старинке — по индексам. В случае индексов вы получаете доступ к элементам исходного массива.
massiv = ['12', '123', '1234'] for i in range(len(massiv) - 1): for j in range(len(massiv) - 1): if len(massiv[i]) > len(massiv[j]): del massiv[j] elif len(massiv[i]) < len(massiv[j]): del massiv[i] print massiv # =>['1234']
Отслеживать
ответ дан 19 фев 2012 в 17:07
629 4 4 серебряных знака 7 7 бронзовых знаков
1- ваш код ведёт к IndexError для другого ввода 2- код у автора вопроса не удаляет элементы из массива (ни одного). См. объяснение в ответе @l0ki 4- это не рекомендуется, но можно удалять элементы во время итерации (достаточно просто в обратном порядке обходить список, см. пример кода в конце моего ответа) 3- алгоритм у вас кубический, что гораздо хуже линейного решения: lst[:] = [max(lst, key=len)]
24 янв 2017 в 13:12
maxlen= max([len(i) for i in massiv]) massiv=filter(lambda x: len(x)=maxlen, massiv)
Отслеживать
ответ дан 19 фев 2012 в 17:05
17.9k 3 3 золотых знака 46 46 серебряных знаков 86 86 бронзовых знаков
for a in massiv: for b in massiv: if len(a)> len(b): massiv.remove(b) elif len(a)
Буковок больше, НО стало видно, что и откуда мы удаляем, и в целом это более правильный подход. а вообще, исходя из описания топикстартера, вообще не ясно ничего, кроме того, что у него что-то не работает.
P.S: пишите подробнее суть задачи и проблемы 😉
Отслеживать
51.2k 86 86 золотых знаков 266 266 серебряных знаков 505 505 бронзовых знаков
ответ дан 19 фев 2012 в 13:05
Александр Молофеев Александр Молофеев
2,346 14 14 серебряных знаков 19 19 бронзовых знаков
Рискованный код. .remove(a) удаляет первое вхождение a.
19 фев 2012 в 13:16
for a in massiv и выдаст первый встречный элемент.. риск нулевой если не допускать семнтических ошибок)))
19 фев 2012 в 13:19
for a in massiv -- перебор списка. Причём тут "первый встречный"? И первый, и второй, и третий. Просто при разных значениях massiv последовательность удалений будет весьма причудливой. Возможно правильной, но к человеку, который заставит меня в этом разбираться, я вряд ли буду относиться как к другу. Код -- удаление всех элементов длиной меньше максимальной. Возможно работает, но ну его нафиг.
19 фев 2012 в 13:39
Чтобы удалить элемент из списка lst , если известен его индекс i :
del lst[i]
Чтобы удалить все элементы, кроме элемента с наибольшей длиной:
lst[:] = [max(lst, key=len)]
Идиоматический способ удалить элементы из списка, удовлетворяющие заданному условию, собрать элементы, которые следует оставить и заменить ими все элементы в списке:
lst[:] = [item for item in lst if keep(item)]
Отслеживать
ответ дан 28 ноя 2016 в 20:21
52.2k 11 11 золотых знаков 108 108 серебряных знаков 312 312 бронзовых знаков
а почему не lst[:] = filter(keep, lst)
5 фев 2018 в 11:29
@AndrioSkur: если у вас уже есть функция, то можно filter() использовать, но чаще просто выражение есть типа: if item and item[0] -- в этом случае лучше list comprehension использовать вместо filter + lambda.
5 фев 2018 в 13:05
- Во-первых, это кортеж или статический массив?
- Во-вторых, a и b - это не элементы, это просто моментальное представление.
Должно так быть:
for a in massiv: for b in massiv: if len(a)> len(b): del massiv[b] elif len(a)
Отслеживать
51.2k 86 86 золотых знаков 266 266 серебряных знаков 505 505 бронзовых знаков
ответ дан 19 фев 2012 в 12:56
Даниил Колясников Даниил Колясников
441 3 3 золотых знака 11 11 серебряных знаков 26 26 бронзовых знаков
Спасибо модераторам за то , что они неоформленную каку превращают в прекрасную конфетку
19 фев 2012 в 13:07
К сожалению код из примера неверен. a и b не являются индексами списка massiv
19 фев 2012 в 13:12
alexlz прав: если a или b не являются числами получим такую неприятность как: Type Error: list indices must be int not string или какой там тип данных у вас. а если там будет все таки число ТО сразу получаем невозможность получить len(integer) но даже если и получите каким-то неведомым образом вы удалите элемент по индексу, а не значению как предполагает задача топика.. при чем такой индекс может просто и не существовать в массиве от сюда получаем list index out of range читаем про изменяемые переменные в python
Удаление элементов массива, совпадающих с элементами другого массива
Удаление элементов массива, совпадающих с элементами другого массива
Здравствуйте, помогите найти ошибку в коде; суть задачи такая: удалить элементы из 1 массива.
Cравнение трех первых элементов массива с элементами другого массива
Задание таково: Даны два массива. Надо написать программу, которая брала бы первые три элемента.
Замена элементов массива элементами другого массива
Ввести два одномерных массива X(N) и Y(M), где M>(N-2). Все элементы массива X, стоящие между.

Процедура замены элементов одного массива элементами другого
Дано массивы А и Б, одинакового размера Н, поменять местами их содержание и вывести сначала.
260 / 165 / 54
Регистрация: 03.05.2019
Сообщений: 339
a, b = [1, 2, 3], [1, 2, 3, 4, 5] print([v for v in b if v not in set(a) & set(b)])
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Удаление элементов одного массива из другого
Есть два массива. Один рандомится, второй . В случае, если какой-то из элементов.
Сравнить элемент одного массива со всеми элементами другого массива
Есть массив с разрешеными символами (английский алфавит) И есть массив со всеми введёнными.
Определить количество элементов массива А, совпадающих хотя бы с одним элементом массива В
Даны два одномерных массива А(М), B(N). Определите количество элементов массива А, совпадающих хотя.

Найти количество элементов массива Х, совпадающих со значениями элементов массива Y
Для получения результата составить функцию, исходными данными которой являются два массива.

Арифметические действия с элементами массива, поиск, обмен, удаление, выделение элементов
Создать и распечатать массив дробных чисел, вводимых с клавиатуры. Создать главное меню и следующие.
Удалить первый элемент из списка Python
В этом посте мы обсудим, как удалить первый элемент из списка в Python.
1. Использование list.pop() функция
Самый простой подход - использовать список pop([i]) функция, которая удаляет и возвращает элемент, присутствующий в указанной позиции в списке.
if __name__ == '__main__' :
a = [ 1 , 2 , 3 , 4 , 5 ]
first = a . pop ( 0 )
print ( first ) # 1
print ( a ) # [2, 3, 4, 5]
The pop([i]) функция вызывает IndexError если список пуст, поскольку он пытается выскочить из пустого списка.
2. Использование list.remove() функция
Другой подход заключается в использовании списка remove(x) функция, удаляющая из списка первый элемент, соответствующий заданному значению. Идея состоит в том, чтобы передать ему значение первого элемента списка, как показано ниже:
if __name__ == '__main__' :
a = [ 1 , 2 , 3 , 4 , 5 ]
a . remove ( a [ 0 ] )
print ( a ) # [2, 3, 4, 5]
The remove() функция вызывает IndexError если список пуст, поскольку он пытается получить доступ к индексу списка, который находится вне допустимого диапазона.
3. Использование нарезки
Мы знаем, что в Python мы можем нарезать списки. Мы можем использовать нарезку, чтобы удалить первый элемент из списка. Идея состоит в том, чтобы получить подсписок, содержащий все элементы списка, кроме первого. Поскольку операция среза возвращает новый список, мы должны присвоить новый список исходному списку. Это можно сделать с помощью выражения l = l[1:] , куда l это ваш список.
