# Remove multiple elements from a list in Python

Given a list of numbers, write a Python program to remove multiple elements from a list based on the given condition.

Example:

```Input: [12, 15, 3, 10]
Output: Remove = [12, 3], New_List = [15, 10]

Input: [11, 5, 17, 18, 23, 50]
Output: Remove = [1:5], New_list = [11, 50]```

Multiple elements can be deleted from a list in Python, based on the knowledge we have about the data. Like, we just know the values to be deleted or also know the indexes of those values. Let’s see different examples based on a different scenarios.

Example #1: Let’s say we want to delete each element in the list which is divisible by 2 or all the even numbers.

## Python3

 `# Python program to remove multiple` `# elements from a list `   `# creating a list` `list1 ``=` `[``11``, ``5``, ``17``, ``18``, ``23``, ``50``] `   `# Iterate each element in list` `# and add them in variable total` `for` `ele ``in` `list1:` `    ``if` `ele ``%` `2` `=``=` `0``:` `        ``list1.remove(ele)`   `# printing modified list` `print``(``"New list after removing all even numbers: "``, list1)`

Output:

`New list after removing all even numbers:  [11, 5, 17, 23]`

Time Complexity: O(n)
Auxiliary Space: O(n)

Example #2: Using list comprehension

Removing all even elements in a list is as good as only including all the elements which are not even( i.e. odd elements).

## Python3

 `# Python program to remove multiple` `# elements from a list `   `# creating a list` `list1 ``=` `[``11``, ``5``, ``17``, ``18``, ``23``, ``50``] `   `# will create a new list, ` `# excluding all even numbers` `list1 ``=` `[ elem ``for` `elem ``in` `list1 ``if` `elem ``%` `2` `!``=` `0``]`   `print``(``*``list1)`

Output:

`11 5 17 23`

Time Complexity: O(n)
Auxiliary Space: O(n)

Example #3: Remove adjacent elements using list slicing

Below Python code remove values from index 1 to 4.

## Python3

 `# Python program to remove multiple` `# elements from a list `   `# creating a list` `list1 ``=` `[``11``, ``5``, ``17``, ``18``, ``23``, ``50``] `   `# removes elements from index 1 to 4` `# i.e. 5, 17, 18, 23 will be deleted` `del` `list1[``1``:``5``]`   `print``(``*``list1)`

Output:

`11 50`

Time Complexity: O(n)
Auxiliary Space: O(n)

Example #4: Using list comprehension

Let’s say the elements to be deleted is known, instead of the indexes of those elements. In this case, we can directly eliminate those elements without caring about indexes which we will see in next example.

## Python3

 `# Python program to remove multiple` `# elements from a list `   `# creating a list` `list1 ``=` `[``11``, ``5``, ``17``, ``18``, ``23``, ``50``] `   `# items to be removed` `unwanted_num ``=` `{``11``, ``5``}`   `list1 ``=` `[ele ``for` `ele ``in` `list1 ``if` `ele ``not` `in` `unwanted_num]`   `# printing modified list` `print``(``"New list after removing unwanted numbers: "``, list1)`

Output:

`New list after removing unwanted numbers:  [17, 18, 23, 50]`

Time Complexity: O(n)
Auxiliary Space: O(n)

Example #5: When index of elements is known.
Though indexes of elements in known, deleting the elements randomly will change the values of indexes. Hence, it is always recommended to delete the largest indices first. Using this strategy, index of smaller values will not be changed. We can sort the list in reverse order and delete the elements of list in descending order.

## Python3

 `# Python program to remove multiple` `# elements from a list `   `# creating a list` `list1 ``=` `[``11``, ``5``, ``17``, ``18``, ``23``, ``50``] `   `# given index of elements ` `# removes 11, 18, 23` `unwanted ``=` `[``0``, ``3``, ``4``]`   `for` `ele ``in` `sorted``(unwanted, reverse ``=` `True``): ` `    ``del` `list1[ele]`   `# printing modified list` `print` `(``*``list1)`

Output:

`5 17 50`

## Python3

 `list1 ``=` `[``11``, ``5``, ``17``, ``18``, ``23``, ``50``] `   `list1 ``=` `[ elem ``for` `i,elem ``in` `enumerate``(list1) ``if` `elem ``%` `2` `!``=` `0``]`   `print``(list1)`

Output

`[11, 5, 17, 23]`

Time Complexity: O(n log n)
Auxiliary Space: O(n)

Approach using numpy.delete():

Algorithm:

Create a numpy array from the given list.
Find the indices of the elements to be removed.
Use numpy.delete() to remove the elements based on the indices found in the previous step.
Convert the resulting numpy array back to a list.
Code:

## Python3

 `import` `numpy as np`   `#creating a list` `list1 ``=` `[``12``, ``15``, ``3``, ``10``]`   `#convert list to numpy array` `arr ``=` `np.array(list1)`   `#indices of elements to be removed` `remove_idx ``=` `[``0``, ``2``]`   `#use numpy.delete() to remove elements` `new_arr ``=` `np.delete(arr, remove_idx)`   `#convert numpy array back to list` `new_list ``=` `new_arr.tolist()`   `#print the results` `print``(``"Removed ="``, [list1[i] ``for` `i ``in` `remove_idx], ``", New_List ="``, new_list)`

Output;

`Removed = [12, 3] , New_List = [15, 10]`

Time complexity: O(n)
Space complexity: O(n) (for creating the numpy array)

Feeling lost in the world of random DSA topics, wasting time without progress? It's time for a change! Join our DSA course, where we'll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 geeks!