2010-04-23 3 views
4

J'ai une liste d'entiers dans la représentation de chaîne, semblable au suivant:Convertir une liste de chaînes ['3', '1', '2'] en une liste d'entiers triés [1, 2, 3]

L1 = ['11', '10', '13', '12', 
     '15', '14', '1', '3', 
     '2', '5', '4', '7', 
     '6', '9', '8'] 

je dois faire une liste des entiers tels que:

L2 = [11, 10, 13, 12, 15, 14, 1, 3, 2, 5, 4, 7, 6, 9, 8] 

Enfin, je vais trier comme ci-dessous:

L3 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] # by L2.sort() 

S'il vous plaît laissez-moi savoir ce que est le meilleur moyen d'obtenir de L1 à L3?

+0

Est-ce devoirs? –

+2

@Michael Dorgan: Toutes les questions de base ne sont pas des devoirs. Laissez l'OP indiquer s'il s'agit de devoirs. –

Répondre

5
>>> L1 = ['11', '10', '13', '12', '15', '14', '1', '3', '2', '5', '4', '7', '6', '9', '8'] 
>>> L1 = [int(x) for x in L1] 
>>> L1 
[11, 10, 13, 12, 15, 14, 1, 3, 2, 5, 4, 7, 6, 9, 8] 
>>> L1.sort() 
>>> L1 
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] 
>>> L3 = L1 
19

Vous pouvez le faire en une seule étape comme ceci:

L3 = sorted(map(int, L1)) 

De façon plus détaillée, voici les étapes:

>>> L1 = ['11', '10', '13', '12', '15', '14', '1', '3', '2', '5', '4', '7', '6', '9', '8'] 
>>> L1 
['11', '10', '13', '12', '15', '14', '1', '3', '2', '5', '4', '7', '6', '9', '8'] 
>>> map(int, L1) 
[11, 10, 13, 12, 15, 14, 1, 3, 2, 5, 4, 7, 6, 9, 8] 
>>> sorted(_) 
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] 
>>> 
+0

Je ne savais pas que vous pouvez utiliser le trait de soulignement comme ça. Cet interprète est-il spécifique? +1 –

+0

@Xavier, c'est une petite chose de commodité dans l'interpréteur interactif seulement. –

+0

Oui '_' ne fonctionne que dans l'interpréteur de cette façon. La seule façon que je connaisse de "access" '_' dans un script est dans une compréhension de liste' locals() ['_ [1]'] .__ self__' retournera la liste en cours de construction. –

4
L3 = sorted(int(x) for x in L1) 
Questions connexes