2017-09-25 1 views
-3

Comment filtrer ou supprimer le .0 à la fin de mes numéros? J'ai essayé de les convertir en entiers mais les listes ne le permettent pas. Est-ce que regex est ma meilleure option? Je n'ai pas besoin de faire des calculs avec les chiffres. Je dois juste enlever le .0 à la fin. tous aider à accueillir.Modifié Eléments de liste imbriqués au format entier

Nums = [['17001.0', '17001.0'], ['17001.0', '11001.0'], ['17001.0', '18001.0'], ['17001.0', '19001.0'], 
    ['14001.0', '12001.0'], ['19001.0', '18001.0'], ['19001.0', '16001.0'], ['15001.0'], ['16001.0'], 
    ['18001.0'], ['19001.0'], ['18001.0'], ['22.0'], ['22.0'], ['22.0'], ['19001.0']] 
+0

Vous pouvez parcourir en boucle et peut convertir en int en => int (flotteur ('17001,0')) – Harsha

+1

sous-chaîne, regex, double convertion. test d'opération de chaîne si c'est un point. Vous ne savez pas comment faire une opération de base sur une liste ou vous ne voulez pas avoir la meilleure solution efficace. Dans les deux cas, vous devriez [modifier] avec ce que vous avez essayé. Vous ne pouvez pas trouver le «meilleur» sans les tester tous, alors pourquoi ne pas benchmark chaque solution _working_ qui vous vient à l'esprit. –

Répondre

0

I Tried les convertir en entiers BYT listes n'alow que

C'est complètement faux:

IntNums = [] 
for lst in Nums: 
    IntLst = [] 
    for n in lst: 
     IntLst.append(int(float(n))) 
    IntNums.append(IntLst) 

Vous ne pouvait pas convertir des chaînes en entiers parce qu'ils contenaient le suffixe '.0', mais vous pouvez d'abord les convertir en floats puis en entiers.

Si vous voulez convertir la liste en place, vous itérer à l'aide des indices:

for i in range(len(Nums)): 
    for j in range(len(Nums[i])): 
     Nums[i][j] = int(float(Nums[i][j])) 

Vous pouvez utiliser une compréhension de la liste aussi:

Nums = [[int(float(n)) for n in lst] for lst in Nums] 
2

Si vous voulez list avec integer éléments alors ce peut vous aider:

Nums = [['17001.0', '17001.0'], ['17001.0', '11001.0'], ['17001.0', '18001.0']] 
a=[] 
for c in Nums: 
    if len(c)>1: 
     for d in c: 
      a.append(int(float(d))) 
    else: 
     a.append(int(float(c))) 

# a= [17001, 17001, 17001, 11001, 17001, 18001] 
+1

En quoi est-ce différent de ce que j'ai posté? – MarkWeston

+0

@ MarkWeston Je suppose que c'est une autre approche simple. – GeekSambhu

1

Je crois que ce serait le s approche implest:

nozeros = [] 
for i in Nums: 
    nozeros.append([int(j.split('.')[0]) for j in i])