Mam listę, która wygląda mniej więcej tak:Jak przekształcić listę wielopoziomową w listę ciągów w Pythonie?
a = [('A', 'V', 'C'), ('A', 'D', 'D')]
I chcę utworzyć inną listę, która przemienia a
do:
['AVC', 'ADD']
Jak pójdę na to zrobić?
Mam listę, która wygląda mniej więcej tak:Jak przekształcić listę wielopoziomową w listę ciągów w Pythonie?
a = [('A', 'V', 'C'), ('A', 'D', 'D')]
I chcę utworzyć inną listę, która przemienia a
do:
['AVC', 'ADD']
Jak pójdę na to zrobić?
Zastosowanie str.join()
w listowego (działa zarówno w Pythonie 2.x oraz 3.x):
>>> a = [('A', 'V', 'C'), ('A', 'D', 'D')]
>>> [''.join(x) for x in a]
['AVC', 'ADD']
Korzystanie reduce
ma innej opcji:
>>> a = [('A','V','C'), ('A','D','D')]
W Pythonie 2:
>>> [reduce(lambda x, y: x + y , i) for i in a]
['AVC', 'ADD']
W języku Python 3 (dzięki za sugestię eugenu):
>>> from functools import reduce
>>> [reduce(lambda x, y: x + y , i) for i in a]
['AVC', 'ADD']
Można map str.join
siebie tuple
w a
:
Python 2:
>>> map(''.join, a)
['AVC', 'ADD']
W Pythonie 3, map
jest iterable obiektu tak trzeba by urzeczywistnić go jako list
:
>>> list(map(''.join, a))
['AVC', 'ADD']
Powoduje zwrócenie obiektu mapy na moim komputerze. – vaultah
@vaultah edytował tak, jak skomentowałeś. –
Jednak bardzo nieefektywna opcja. – chepner
W Pythonie 3 potrzebujesz 'od fun importu reduce'. –
@eugeney, właśnie edytowane, dzięki. – Quinn