Здесь делал.
Для строки подправил код (иначе в бесконечную рекурсию падает)
>>> def flatten(seq):
... for i in seq:
... if hasattr(i, '__getitem__') and not isinstance(i, str):
... for j in flatten(i):
... yield j
... else:
... yield i
...
>>> list(flatten(['анна_2000', 'евгений_1981', ['михаил_1994', 'глеб_1982', 'кирилл_2010']]))
['анна_2000', 'евгений_1981', 'михаил_1994', 'глеб_1982', 'кирилл_2010']
>>>
>>> list(flatten(['анна_2000', 'евгений_1981', ['михаил_1994', 'глеб_1982', ['jimbo'], 'кирилл_2010']]))
['анна_2000', 'евгений_1981', 'михаил_1994', 'глеб_1982', 'jimbo', 'кирилл_2010']
>>>
tags: flatten