2012-07-10 6 views
0

J'ai une énorme liste avec des centaines de milliers de chiffres. La liste est mal formatée lorsqu'elle est produite par sagemath, mais je dois l'avoir dans le type de formatage ci-dessous pour "l'alimenter" à une autre fonction. Voici la liste échantillon de bien formaté:Alignement des éléments de la liste Sagemath

  C=[ 
      ( 7.850629, 25.421135, 22.162571), 
      (37.706629, 28.421472, 0.229876), 
      (37.560629, 21.421809, 18.320977), 
      (39.238629, 26.422147, 18.442572), 
      (35.087169, 0.419785, 15.055789), 
      ] 

Comme vous pouvez le voir, tous les éléments sont alignés à droite, ainsi que sur la base de la précision et de chiffre après la virgule. Donc, ma question est la suivante: Comment puis-je convertir la liste mal formatée (exemple ci-dessous) au bien formaté ci-dessus

B=[(37.074945, 22.414327, 
9.756234), (37.074945, 22.414665, 
1.669214), (37.074945, 22.415002, 
8.571376), (37.074945, 22.41534, 
1.294731), (37.074945, 22.415677, 
5.753062), (37.074945, 22.416014, 
7.519850)] 

(Si je pouvais le décrire même un peu plus, je dirais que si mon la liste est considérée comme une matrice, alors elle aurait des dixièmes de milliers de lignes et trois colonnes)

Répondre

0

Sage n'a pas de bonnes fonctions d'alignement intégrées. Si vous êtes prêt à penser à votre liste en tant que matrice, vous pouvez faire

sage: matrix(B) 
[37.0749450000000 22.4143270000000 9.75623400000000] 
[37.0749450000000 22.4146650000000 1.66921400000000] 
[37.0749450000000 22.4150020000000 8.57137600000000] 
[37.0749450000000 22.4153400000000 1.29473100000000] 
[37.0749450000000 22.4156770000000 5.75306200000000] 
[37.0749450000000 22.4160140000000 7.51985000000000] 

Il manque les virgules et autres morceaux syntaxiques, mais il est aligné correctement. Si vous êtes prêt à travailler avec la sortie html, vous pouvez faire html.table(B). Dans le futur (voir this possible future enhancement) il devrait y avoir une bonne fonction "table" pour de jolis affichages comme celui-ci en général.

+0

Le problème est que les données d'exemple n'était pas bon, bien, pour un exemple. Matrice ne sera pas aligner les éléments selon l'une décimale C = [(37,074945, 22,414327, 9,756234 ), (37,074945, 22,414665, 1,669214 ), (37,074945, 22,415002, 8,571376 ), (37,074945, 22,41534, 18,294731 ), (37.074945, 22.415677, 5.753062), (37.074945, 22.416014, 17.519850)] vous voyez ceci en essayant avec celui-ci. Néanmoins, j'ai accompli ma tâche actuelle grâce à votre aide. Merci beaucoup – CosmoSurreal

0

Eh bien, je pense que c'est une question générale de Python. Étant donné le C dans votre commentaire, le travail suivant. Le "%9.5f" est la clé aperçu:

for l in C: 
    print "(%s)," % ', '.join("%9.5f"%i for i in l) 
    ....:  
(37.07494, 22.41433, 9.75623), 
(37.07494, 22.41466, 1.66921), 
(37.07494, 22.41500, 8.57138), 
(37.07494, 22.41534, 18.29473), 
(37.07494, 22.41568, 5.75306), 
(37.07494, 22.41601, 17.51985), 
Questions connexes