如何将列表中的所有string转换为浮动

我用这段代码打开一个excel文件,创buildexcel文件的每一行的列表:

import csv with open("csvfile.csv", "rb") as f: lines = list(csv.reader(f)) >>> lines [['0', '23.345', '-122.456'], ['1', '12.546', '-118.987'] ['2', '67.435', '-104.112']] 

我想保持在一个更大的列表的Excel文件的每一行的列表,但我希望每个元素是浮动而不是string。 我需要做些什么改变?

[[0, 23.345, -122.456], [1, 12.546, -118.987], [2, 67.435, -104.112]]

您可以在列表列表中使用嵌套列表理解

 >>> my_list = [['0', '23.345', '-122.456'], ['1', '12.546', '-118.987'], ['2', '67.435', '-104.112']] >>> [[float(i) for i in sub_list] for sub_list in my_list] [[0.0, 23.345, -122.456], [1.0, 12.546, -118.987], [2.0, 67.435, -104.112]] 

在阅读文件时使用列表理解中的map

 import csv with open("csvfile.csv", "rb") as f: lines = [map(float, line) for line in csv.reader(f)] 

保存你创build一个列表两次(阅读,转换)

你可以使用map()和列表parsing :

 [map(float, sub_list) for sub_list in my_list] 

输出:

 >>> [map(float, sub_list) for sub_list in my_list] [[0.0, 23.345, -122.456], [1.0, 12.546, -118.987], [2.0, 67.435, -104.112]] 

更改:

 lines = list(csv.reader(f)) 

成:

 lines = [[float(x) for x in line] for line in csv.reader(f)] 

即:

 import csv with open("csvfile.csv", "rb") as f: lines = [[float(x) for x in line] for line in csv.reader(f)]