2009-05-22 15 views
6

Jak wykonać następujące czynności w Pythonie 2.2 tylko za pomocą wbudowanych modułów?Konwertuj listę list na rozgraniczony ciąg

Mam listę takich list:
[["pies", 1], ["kot", 2, "a"], ["szczur", 3, 4], ["nietoperz" , 5]]

A z tego chciałbym utworzyć reprezentację łańcuchową tabeli takiej jak ta, w której kolumny są rozdzielane tabulatorami, a wiersze znakami nowej linii.

dog 1 
cat 2 a 
rat 3 4 
bat 5 

tj
'pies \ t1 \ nkat \ t2 \ TA \ nrat \ t3 \ t4 \ nbat \ T5'

Odpowiedz

19

jak ta, być może:

lists = [['dog', 1], ['cat', 2, 'a'], ['rat', 3, 4], ['bat', 5]] 
result = "\n".join("\t".join(map(str,l)) for l in lists) 

ten łączy wszystko wewnętrzne listy używające kart i łączy powstałą listę łańcuchów za pomocą znaków nowej linii.

Wykorzystuje funkcję o nazwie list comprehension do przetwarzania listy zewnętrznej.

+0

Musisz przekonwertować ints na ciągi przed ich dołączeniem. – Dave

+0

musisz upewnić się, że każdy element w zmiennej "lists" jest ciągiem, ale poza tym fragment kodu jest wyjątkowo zwięzły i ekspresyjny. Naprawdę powinienem spędzać więcej czasu z Pythonem ... –

+0

Możesz także zmienić drugi wiersz na: result = '\ n'.join (' \ t'.join (str (el) dla el in listy) dla listy w list) – mipadi

4
# rows contains the list of lists 
lines = [] 
for row in rows: 
    lines.append('\t'.join(map(str, row))) 
result = '\n'.join(lines) 
+0

+1, aby było proste i łatwe do odczytania – nosklo