J'ai cette liste de listes contenant des valeurs de chaîne:
results = [float(i) for i in List]
J'essaie de transformer chaque valeur de chaîne de la liste de listes en une valeur flottante.
J'essayais:
List = [['138.314038', '-35.451642'], ['138.313946', '-35.45212'], ['138.313395', '-35.45291'], ['138.312425', '-35.453978'], ['138.311697', '-35.454879'], ['138.311042', '-35.45569'], ['138.310407', '-35.45647'], ['138.315603', '-35.44981'], ['138.315178', '-35.450241'], ['138.314603', '-35.450948'], ['138.314038', '-35.45164']]
Mais je n'indexe que les listes et non les valeurs à l'intérieur. Comment puis-je le faire en utilisant une approche similaire et en gardant la même structure de la variable List.
6 Réponses :
Vous avez une liste, utilisez donc une double compréhension:
results = [[float(i) for i in e] for e in List]
J'utilise numpy convertit
np.array(List).astype(float).tolist() Out[185]: [[138.314038, -35.451642], [138.313946, -35.45212], [138.313395, -35.45291], [138.312425, -35.453978], [138.311697, -35.454879], [138.311042, -35.45569], [138.310407, -35.45647], [138.315603, -35.44981], [138.315178, -35.450241], [138.314603, -35.450948], [138.314038, -35.45164]]
vous pouvez développer la liste, comme ceci:
results = [list(map(float, l)) for l in List]
Peut-être moche en utilisant deux list maps:
[[138.314038, -35.451642], [138.313946, -35.45212], [138.313395, -35.45291], [138.312425, -35.453978], [138.311697, -35.454879], [138.311042, -35.45569], [138.310407, -35.45647], [138.315603, -35.44981], [138.315178, -35.450241], [138.314603, -35.450948], [138.314038, -35.45164]]
Output:
pprint.pprint(list(map(lambda x: list(map(float,x)), List)))
Imprimez-le mieux:
[[138.314038, -35.451642], [138.313946, -35.45212], [138.313395, -35.45291], [138.312425, -35.453978], [138.311697, -35.454879], [138.311042, -35.45569], [138.310407, -35.45647], [138.315603, -35.44981], [138.315178, -35.450241], [138.314603, -35.450948], [138.314038, -35.45164]]
Sortie:
print(list(map(lambda x: list(map(float,x)), List)))
#you can use map function as well results = [list(map(float,x)) for x in List]
Vous pouvez utiliser la carte pour y parvenir.
floats = [ list(map(float, i)) for i in List ]