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']
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.