Как преобразовать многоуровневый список в список строк в Python?

У меня есть список, который выглядит примерно так:

a = [('A', 'V', 'C'), ('A', 'D', 'D')]

И я хочу создать еще один список, который преобразует a в:

['AVC', 'ADD']

Как я могу это сделать?

Ответы

Ответ 1

Используйте str.join() в понимании списка (работает как в Python 2.x, так и 3.x):

>>> a = [('A', 'V', 'C'), ('A', 'D', 'D')]
>>> [''.join(x) for x in a]
['AVC', 'ADD']

Ответ 2

Вы можете сопоставить str.join с каждым tuple в a:

Python 2:

>>> map(''.join, a)
['AVC', 'ADD']

В Python 3, map - это итерируемый объект, поэтому вам нужно материализовать его как list:

>>> list(map(''.join, a))
['AVC', 'ADD']

Ответ 3

Использование reduce - это еще одна опция:

>>> a = [('A','V','C'), ('A','D','D')]

В Python 2:

>>> [reduce(lambda x, y: x + y , i) for i in a]
['AVC', 'ADD']

В Python 3 (спасибо за предложение Евгения):

>>> from functools import reduce
>>> [reduce(lambda x, y: x + y , i) for i in a]
['AVC', 'ADD']