Sentry Answers>Python>

Removing items from Python lists: `del` vs `pop` vs `remove`

Removing items from Python lists: `del` vs `pop` vs `remove`

David Y.

The ProblemJump To Solution

I’ve seen a few different ways to remove an item from a list in Python:

  • The keyword del (e.g. del mylist[2]).
  • The method remove() (e.g. mylist.remove(2)).
  • The method pop(). (e.g. mylist.pop(2))

What are the advantages and disadvantages of each and when should I use one rather than another?

The Solution

While these three methods remove an item from a list, they all work differently.

The del method is useful when deleting an item at a specific position in the list. For example:

Click to Copy
mylist = ['a', 'b', 'c', 'd'] del mylist[2] # will delete the item at index 2, that is 'c' print(mylist) # will print ['a', 'b', 'd']

We can even delete multiple items by using a slice:

Click to Copy
mylist = ['a', 'b', 'c', 'd'] del mylist[1:3] # will delete the items at indices 1 and 2, that is 'b' and 'c' print(mylist) # will print ['a', 'd']

The list.remove() method is useful when deleting an item by value, regardless of its position. It searches the list for the provided value and deletes the first one it finds, raising a ValueError exception if it does not find the item. For example:

Click to Copy
mylist = ['a', 'b', 'c', 'c', 'd'] mylist.remove('c') print(mylist) # will print ['a', 'b', 'c', 'd'] mylist.remove('c') # will remove the remaining 'c' print(mylist) # will print ['a', 'b', 'd'] try: mylist.remove('c') # will raise a value error as there is no 'c' except ValueError: print('Value not found in list.')

The list.pop() method called without any arguments allows us to use a Python list as a stack, removing and returning the last item in the list.

Click to Copy
mylist = ['a', 'b', 'c', 'd'] popped = mylist.pop() print(popped) # will print 'd' print(mylist) # will print ['a', 'b', 'c']

You can specify an optional index argument for pop to remove and return the item at a specific position:

Click to Copy
mylist = ['a', 'b', 'c', 'd'] popped = mylist.pop(2) print(popped) # will print 'c' print(mylist) # will print ['a', 'b', 'd']
  • Sentry BlogPython Performance Testing: A Comprehensive Guide
  • Sentry BlogLogging in Python: A Developer’s Guide
  • Syntax.fm logo
    Listen to the Syntax Podcast

    Tasty treats for web developers brought to you by Sentry. Get tips and tricks from Wes Bos and Scott Tolinski.

    SEE EPISODES

Considered “not bad” by 4 million developers and more than 100,000 organizations worldwide, Sentry provides code-level observability to many of the world’s best-known companies like Disney, Peloton, Cloudflare, Eventbrite, Slack, Supercell, and Rockstar Games. Each month we process billions of exceptions from the most popular products on the internet.

© 2024 • Sentry is a registered Trademark
of Functional Software, Inc.