2010-05-07 7 views
1

j'ai une liste d'éléments, et chaque élément est constitué de quatre valeurs distinctes qui sont séparées par des pattes:Comment puis-je transformer un seul élément d'une liste en plusieurs éléments en utilisant Python?

['A\tB\tC\tD', 'Q\tW\tE\tR', etc.] 

Ce que je veux est de créer une plus grande liste sans les onglets, de sorte que chaque valeur est séparée élément:

['A', 'B', 'C', 'D', 'Q', 'W', 'E', 'R', etc.] 

Comment puis-je faire cela en Python? J'en ai besoin pour mes cours, à cause de ce soir (minuit GMT) et je suis complètement perplexe.

Répondre

5

Tout à coup:

'\t'.join(['A\tB\tC\tD', 'Q\tW\tE\tR']).split('\t') 

Un à la fois:

[c for s in ['A\tB\tC\tD', 'Q\tW\tE\tR'] for c in s.split('\t')] 

Ou si tous les éléments sont des lettres simples:

[c for s in ['A\tB\tC\tD', 'Q\tW\tE\tR'] for c in s[::2]] 

Si l'on pourrait citer les onglets alors:

import csv 
rows = csv.reader(['A\t"\t"\tB\tC\tD', 'Q\tW\tE\tR'], delimiter='\t') 
[c for s in rows for c in s] # or list(itertools.chain.from_iterable(rows)) 
0

Question de devoirs?

t = ['A\tB\tC\tD', 'Q\tW\tE\tR'] 
sum((x.split('\t') for x in t),[]) 
+0

Merci les gars tellement, cela est une aide massive: D – Trivun

0

Cela devrait fonctionner:

t = ['A\tB\tC\tD', 'Q\tW\tE\tR'] 

t = reduce(lambda x, y: x + y, map(str.split,t)) 
+0

Utiliser 'somme (carte (str.split, t), [])' si vous vont cette route. – jfs

Questions connexes