Python Python Collections (2016, retired 2019) Lists Removing items from a list

Serafin Sanchez
Serafin Sanchez
1,474 Points

Using isinstance to check for str and bool. It seems like this should work but I'm not getting past this level.

lists.py
messy_list = ["a", 2, 3, 1, False, [1, 2, 3]]

messy_list.pop(3)
messy_list.insert(0,1)

for n in messy_list:
    if isinstance(n, str):
        messy_list.remove(n)
    elif isinstance(n, bool):
        messy_list.remove(n)

1 Answer

Steven Parker
Steven Parker
172,167 Points

Your idea is good, but there are a couple of implementation issues:

  • altering a list while iterating on it can cause items to be skipped, use a copy for the loop
  • besides str and bool, there's also a list to remove
  • hint: try just removing everything but what you want to keep