2009-12-15 2 views
1

J'ai lu un fichier dans et converti chaque ligne dans une liste. Un échantillon de la liste ressemble à:Python: Liste aux entiers

['15', '2', '0'], ['63', '3', '445', '456' '0'], ['23 », « 4 », « 0 »]

je veux récupérer le premier numéro de chaque liste et le convertir en et entier donc quand je porte la fonction de type à savoir

type(x) 
<type 'int'> is returned 

aussi quand j'imprimer x les entiers sont imprimés individuellement plutôt que joints. à savoir si je pris les 3 premiers numéros de la liste ci-dessus les numéros ne sont pas imprimés comme:

+2

Votre question est un peu vague quant à la façon dont vous voulez que la sortie soit. Veuillez préciser. –

+0

Il serait plus utile que vous nous disiez comment vous voulez que les chiffres soient imprimés, au lieu de ce que vous * ne voulez pas (car je suppose qu'il y en a un nombre infini). – tgray

Répondre

1
# Converts all items in all lists to integers. 
ls = [map(int, x) for x in the_first_list] 

Ou si vous voulez juste les deux premiers éléments:

ls = [map(int, x[:2]) for x in the_first_list] 

Dans python 3.x, vous devez également placer la carte dans un constructeur de liste, comme ceci

ls = [list(map(int, x[:2])) ... 
+0

+1, mais pas sûr si la compréhension de la liste interne est ce que le PO recherche. peut-être [map (int, x) pour x dans la_first_list]? –

+0

Cela convertit tous les éléments en entiers et maintient la liste intacte, il veut juste le premier nombre de chaque liste. – Kimvais

+0

Je l'ai légèrement modifié pour le convertir en liste. –

0

Si je comprends bien votre question, il est [int x[0] for x in list_of_lists]

3

Si vous voulez une liste avec le premier numéro de chaque liste, [int(L[0]) for L in lines] (en supposant que la liste des listes est appelée lines); si vous voulez le premier deux numéros de chaque liste (c'est difficile à dire à partir de votre question), [int(s) for L in lines for s in L[:2]]; et ainsi de suite.

Si vous ne voulez pas une liste de ces chiffres, mais juste pour faire une itération sur eux, vous pouvez utiliser une expression de générateur, à savoir:

for number in (int(s) for L in lines for s in L[:2]): 
    ...do something with number... 

ou une approche en boucle imbriquée équivalent tel que :

for L in lines: 
    for s in L[:2]: 
    number = int(s) 
    ...do something with number... 
7

caster vos ints:

my_ints = [int(l[0]) for l in your_list] 

Pour les imprimer:

print "".join(map(str, my_ints)) 
+2

'my_ints = map (lambda n: int (n [0]), votre_liste)' fonctionne également. –

0
lines = [['15', '2', '0'], ['63', '3', '445', '456' '0'], ['23', '4', '0']] 
first_values_as_ints = [int(line[0]) for line in lines] 
for x in first_values_as_ints: 
    print x,