我想将浮点数列表转换为整数。 我的代码
import math
data1 = [line.strip() for line in open("/home/milenko/Distr70_linux/Projects/Tutorial_Ex3/myex/base.txt", 'r')]
print type(data1)
data1c = [int(math.floor(i)) for i in data1]
print data1c[0]
我应该改变什么? 文件很大,只有几行
1.200000e+03
1.200000e+03
1.200000e+03
1.200000e+03
1.200000e+03
1.200000e+03
1.200000e+03
1.200000e+03
答案 0 :(得分:6)
你需要先施展才能浮动:
[int(float(i)) for i in data1]
调用int
会为您编号:
In [8]: int(float("1.23456e+03"))
Out[8]: 1234
您可以在文件逻辑中完成所有操作:
with open("/home/milenko/Distr70_linux/Projects/Tutorial_Ex3/myex/base.txt", 'r') as f:
floored = [int(float(line)) for line in f]
最好使用with打开文件,它会为您处理文件的关闭。此外, int 和 float 可以处理前导或尾随空格,因此您不必担心使用条带。
此外,如果你只是想拉动浮动而不是底层,map
是从文件或任何可迭代创建浮点数,整数等列表的好方法:
floored = list(map(float, f))
或者使用python3,map返回迭代器,你可以双映射:
floored = list(map(int, map(float, f)))
python2中的等效代码将使用itertools.imap
from itertools import imap
floored = map(int, imap(float, f))
答案 1 :(得分:2)