如何将列表中的所有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)]