pythonarraysstringlistcustom-lists

Remove empty strings from a list except 1st one in Python


I am trying to remove empty strings from a list except the 1st element. I have this code -

my_list = ['', 'CHANGE_TO(1)', 'x', 'x', 'x', 'x', 'x', '1', '']
while("" in my_list[1:]) :
  my_list.remove("")
print(my_list)

But I am not getting the desires result. It's still removing the 1st element. The result I am looking for is -

['', 'CHANGE_TO(1)', 'x', 'x', 'x', 'x', 'x', '1']

But I am getting -

['CHANGE_TO(1)', 'x', 'x', 'x', 'x', 'x', '1']

Solution

  • You can use:

    my_list = [my_list[0]] + [item for item in my_list[1:] if item != ""]
    

    This code works by simply combining the result of the first element in the list [my_list[0]] with the filtered result you desire: [item for item in my_list[1:] if item != ""].

    The problem is that .remove will remove the first element from the list despite your while statement.