A menudo en Python necesitamos imprimir una lista por la línea de comandos. La manera mas habitual y sencilla es imprimir los elementos de la lista separados por comas. Por ejemplo:
Código
1 2 3 4 5 | fruit_list = ['Albaricoque', 'Cereza', 'Ciruela', 'Higo', 'Kaki', 'Manzana', 'Melocoton', 'Nectarina', 'Nispero', 'Pera', 'Uva', 'Aguacate', 'Carambola', 'Chirimoya', 'Coco', 'Datil', 'Fresa', 'Fruta de la pasion', 'Kiwi', 'Litchi', 'Mango', 'Papaya', 'Platano', 'Grosella negra'] print ','.join(fruit_list) |
Resultado
1 | Aguacate, Albaricoque, Carambola, Cereza, Chirimoya, Ciruela,..... |
Pero yo encuentro que no es muy legible para el usuario. Voy a dejar aquí una pequeña función que imprime por línea de comandos la lista formateada en columnas, ordenando los elementos alfabéticamente. A la función se le pasa por parámetro la lista (obvio) y el número de columnas que deseas. Como parámetro opcional (con un valor por defecto de 2) se puede indicar el espacio entre columnas. Para un ajuste óptimo, la función calcula el espacio que necesita para cada una de las columnas.
Código
1 2 3 4 5 6 7 8 9 10 11 12 | def print_sorted_list(data, columns, gap=2): if data: gap = 2 ljusts = {} for count, item in enumerate(sorted(data), 1): column = count % columns ljusts[column] = len(item) if (column not in ljusts) else max(ljusts[column], len(item)) for count, item in enumerate(sorted(data), 1): print item.ljust(ljusts[count % columns] + gap), if (count % columns == 0) or (count == len(data)): print |
Demo
1 2 3 4 5 | fruit_list = ['Albaricoque', 'Cereza', 'Ciruela', 'Higo', 'Kaki', 'Manzana', 'Melocoton', 'Nectarina', 'Nispero', 'Pera', 'Uva', 'Aguacate', 'Carambola', 'Chirimoya', 'Coco', 'Datil', 'Fresa', 'Fruta de la pasion', 'Kiwi', 'Litchi', 'Mango', 'Papaya', 'Platano', 'Grosella negra'] print_sorted_list(fruit_list, columns=3) |
Resultado
1 2 3 4 5 6 7 8 | Aguacate Albaricoque Carambola Cereza Chirimoya Ciruela Coco Datil Fresa Fruta de la pasion Grosella negra Higo Kaki Kiwi Litchi Mango Manzana Melocoton Nectarina Nispero Papaya Pera Platano Uva |
Saludos.