I wanted to clean a list by its length, removing small words.
def is_word_min_than(number, word):
if len(word) > number:
return False
else:
return True
def filtrate_valid_words(query):
min_len_number = 3
for word in query:
if is_word_min_than(min_len_number, word):
query.remove(word)
return query
filtrate_valid_words(['tacos',',','kkk'])
My last value was in the returned query, it hadnt to be there. I came up with the idea that this was happening because I was modifying the object I was iterating.
So I cloned my first list.
def is_word_min_than(number, word):
if len(word) > number:
return False
else:
return True
def filtrate_valid_words(query):
min_len_number = 3
original_query = query
for word in original_query:
if is_word_min_than(min_len_number, word):
query.remove(word)
return query
filtrate_valid_words(['tacos',',','kkk'])
Same thing was happening, i dont know why. Anyway, I used the first solution that came to my mind.
def is_word_min_than(number, word):
if len(word) > number:
return False
else:
return True
def filtrate_valid_words(query):
min_len_number = 3
words_to_delete = []
for word in query:
if is_word_min_than(min_len_number, word):
words_to_delete.append(word)
for word in words_to_delete:
query.remove(word)
return query
Now is working but Im just curious about why that happened. Thank you, I hope is not something really dumb. And if is that I would not be surprised, I have to go to sleep.