Вы можете использовать генераторное понимание с enumerate
и сохранить первый индекс, начиная с конца, где есть непустая строка. При использовании next
нам нужно только выполнять итерацию, пока не будет найдена первая непустая строка:
def trim_empty_end(l):
last_ix = next((ix for ix, i in enumerate(l[::-1]) if i), len(l)-1)
return l[:len(l) - last_ix]
trim_empty_end(['a1','b1','c1','d1',''])
# ['a1', 'b1', 'c1', 'd1']
trim_empty_end(['a2','','b2','','c2','d2',''])
# ['a2', '', 'b2', '', 'c2', 'd2']
trim_empty_end(['a3','','b3','','',''])
# ['a3', '', 'b3']
trim_empty_end(['','','','',''])
# ['']