Tutorialsteacher

Follow Us

Articles
  • C#
  • C# OOP
  • ASP.NET Core
  • ASP.NET MVC
  • LINQ
  • Inversion of Control (IoC)
  • Web API
  • JavaScript
  • TypeScript
  • jQuery
  • Angular 11
  • Node.js
  • D3.js
  • Sass
  • Python
  • Go lang
  • HTTPS (SSL)
  • Regex
  • SQL
  • SQL Server
  • PostgreSQL
  • MongoDB
Entity Framework Extensions - Boost EF Core 9
  Bulk Insert
  Bulk Delete
  Bulk Update
  Bulk Merge
  • All
  • C#
  • MVC
  • Web API
  • Azure
  • IIS
  • JavaScript
  • Angular
  • Node.js
  • Java
  • Python
  • SQL Server
  • SEO
  • Entrepreneur
  • Productivity

How to remove items from list in Python?

To remove an item from a list, we have two options. One is using del mylist[i] where i is the index. Other is call mylist.remove(i) method where i is item in the list.

Generally, you would remove item from list if a certain condition is satisfied. Assuming that we want to delete even numbers from mylist, the iteration with index results in error

Example: Remove Items From List using del
mylist=[5,3,7,8,20,15,2,6,10,1] l=len(mylist) for i in range(l): if (mylist[i]%2==0): del mylist[i]
Output
IndexError: list index out of range

This is because list object is dynamically resized as items get deleted. Hence this method for removing item while iterating list doesn't work. A workaround for this could be to employ a decrementing loop. In this example, list size is 10, hence decrement index from 9 to 0

Example: Remove Items From List using del
mylist=[5,3,7,8,20,15,2,6,10,1] for i in range(len(mylist)-1, -1, -1): if mylist[i]%2==0: del mylist[i] print (mylist)
Output
[5, 3, 7, 15, 1]

Calling remove() method of List object also gives incorrect result

Example: Remove Items From List using remove()
mylist=[5,3,7,8,20,15,2,6,10,1] for i in mylist: if (i%2==0): mylist.remove(i) print (mylist)
Output
[5, 3, 7, 20, 15, 6, 1]

We can see that even numbers 20 and 6 are not deleted. This is because when i becomes 8, it is removed and items on right move one place to left and 20 becomes current item before next iteration. Similarly after 2 is removed, 6 becomes current item and escapes condition for removal.

The answer to this strange situation is using list comprehension

Example: Remove List Items using List Comprehension
mylist=[5,3,7,8,20,15,2,6,10,1] mylist=[i for i in mylist if i%2!=0] print(mylist)
Output
[5, 3, 7, 15, 1]

We can also use built-in filter() function. First argument is a function itself which is applied to each item in list and returns an iterator containing those items of list for which argument function evaluates to true.

Example:Remove List Items using filter()
mylist=[5,3,7,8,20,15,2,6,10,1] mylist=list(filter(lambda x:x%2!=0, mylist)) print (mylist)
Output
[5, 3, 7, 15, 1]

Another way is to use filterfalse() function defined in itertools module.

Example: Remove Items using filterfalse()
from itertools import filterfalse mylist=[5,3,7,8,20,15,2,6,10,1] def iseven(i): if i%2==0: return i mylist=list(filterfalse(iseven, mylist)) print (mylist)
Output
[5, 3, 7, 15, 1]
TUTORIALSTEACHER.COM

TutorialsTeacher.com is your authoritative source for comprehensive technologies tutorials, tailored to guide you through mastering various web and other technologies through a step-by-step approach.

Our content helps you to learn technologies easily and quickly for learners of all levels. By accessing this platform, you acknowledge that you have reviewed and consented to abide by our Terms of Use and Privacy Policy, designed to safeguard your experience and privacy rights.

[email protected]

ABOUT USTERMS OF USEPRIVACY POLICY
copywrite-symbol

2024 TutorialsTeacher.com. (v 1.2) All Rights Reserved.