Bonita impresión en 2D lista de Python

¿Existe una forma sencilla e integrada de imprimir una lista de Python 2D como una matriz 2D?

Así que esto:

[["A", "B"], ["C", "D"]] 

se convertiría en algo así como

 AB CD 

Encontré el módulo pprint, pero no parece hacer lo que quiero.

Para hacer las cosas interesantes, intentemos con una matriz más grande:

 matrix = [ ["Ah!", "We do have some Camembert", "sir"], ["It's a bit", "runny", "sir"], ["Well,", "as a matter of fact it's", "very runny, sir"], ["I think it's runnier", "than you", "like it, sir"] ] s = [[str(e) for e in row] for row in matrix] lens = [max(map(len, col)) for col in zip(*s)] fmt = '\t'.join('{{:{}}}'.format(x) for x in lens) table = [fmt.format(*row) for row in s] print '\n'.join(table) 

Salida:

 Ah! We do have some Camembert sir It's a bit runny sir Well, as a matter of fact it's very runny, sir I think it's runnier than you like it, sir 

UPD: para celdas multilínea, algo como esto debería funcionar:

 text = [ ["Ah!", "We do have\nsome Camembert", "sir"], ["It's a bit", "runny", "sir"], ["Well,", "as a matter\nof fact it's", "very runny,\nsir"], ["I think it's\nrunnier", "than you", "like it,\nsir"] ] from itertools import chain, izip_longest matrix = chain.from_iterable( izip_longest( *(x.splitlines() for x in y), fillvalue='') for y in text) 

Y luego aplicar el código anterior.

Véase también http://pypi.python.org/pypi/texttable

Si puedes usar Pandas (Python Data Analysis Library) puedes imprimir una matriz 2D al convertirla en un objeto DataFrame:

 from pandas import * x = [["A", "B"], ["C", "D"]] print DataFrame(x) 0 1 0 AB 1 CD 

Siempre puedes usar numpy

 import numpy as np print(np.matrix(A)) 

Para Python 3:

 matrix = [["A", "B"], ["C", "D"]] print('\n'.join(['\t'.join([str(cell) for cell in row]) for row in matrix])) 

Salida

 AB CD 

Un enfoque más liviano que los pandas es usar el módulo prettytable

 from prettytable import PrettyTable x = [["A", "B"], ["C", "D"]] p = PrettyTable() for row in x: p.add_row(row) print p.get_string(header=False, border=False) 

rendimientos

 AB CD 

prettytable tiene muchas opciones para formatear su salida de diferentes maneras.

Consulte https://code.google.com/p/prettytable/ para obtener más información

Puede actualizar print ‘s end=' ' para que imprima espacio en lugar de’ \ n ‘en el bucle interno y el bucle externo pueda tener print() .

a=[["a","b"],["c","d"]] for i in a: for j in i: print(j, end=' ') print()

Encontré esta solución desde aquí https://snakify.org/en/lessons/two_dimensional_lists_arrays/ .

Vea el siguiente código.

 # Define an empty list (intended to be used as a matrix) matrix = [] matrix.append([1, 2, 3, 4]) matrix.append([4, 6, 7, 8]) print matrix # Now just print out the two rows separately print matrix[0] print matrix[1]