Вы можете определить метод для хранения элементов на основе условия (предиката):
def keep_if(predicate, iterable):
for element in iterable:
if predicate(element):
yield element
Затем определите метод для проверки условия:
def is_between_50_60_percent(letter, string):
perc = string.count(letter) / len(string)
return perc >= 0.5 and perc <= 0.6
Для вашего списка:
lst = ['aaaaabbbbb','yyyyaaaaaaxxx', 'eeeaaaaassaaa']
Наконец, вы можете просто позвонить:
keep_if( lambda x: is_between_50_60_percent('a', x), lst)
res = keep_if( lambda x: is_between_50_60_percent('a', x), lst)
print(list(res)) #=> ['aaaaabbbbb']