(с использованием Python 3)
Данный список называется numList: [1,1,2,2,3,3,3,4].
Я хочу удалить ровно один экземпляр «1» и «3» из numList.
Другими словами, я хочу функцию, которая превратит numList в: [1,2,2,3,3,4].
Какая функция позволит мне удалить X элементов из списка Python один раз для каждого элемента, который я хочу удалить?
(Элементы, которые я хочу удалить, гарантированно существуют в списке)
Для ясности приведу больше примеров:
[1,2,3,3,4]
Удалить 2 и 3
[1,3,4]
[3,3,3]
Удалить 3
[3,3]
[1,1,2,2,3,4,4,4,4]
Удалить 2, 3 и 4
[1,1,2,4,4,4]
Я пытался сделать это:
numList = [1,2,2,3,3,4,4,4]
remList = [2,3,4]
для x в remList:
numList.remove(x)
Это превращает numList в [1,2,3,4,4], что я и хочу. Однако это имеет сложность:
O ((Len (numList)) ^ (Len (remList)))
Это проблема, потому что remList и numList могут иметь длину 10 ^ 5. Программа займет много времени для запуска. Есть ли встроенная функция, которая делает то, что я хочу быстрее?
Кроме того, я бы предпочел оптимальную функцию, которая может выполнять эту работу с точки зрения пространства и времени, поскольку программа должна выполняться менее чем за секунду, а размер списка велик.