TypeError:需要浮点,Python

TypeError:需要浮点,Python,python,list,Python,List,我想把浮点数列表转换成整数。 我的代码 我应该换什么? 文件很大,只有几行 1.200000e+03 1.200000e+03 1.200000e+03 1.200000e+03 1.200000e+03 1.200000e+03 1.200000e+03 1.200000e+03 您需要先强制转换才能浮动: [int(float(i)) for i in data1] 呼叫int将为您输入以下号码: In [8]: int(float("1.23456e+03")) Out[8]: 123

我想把浮点数列表转换成整数。 我的代码

我应该换什么? 文件很大,只有几行

1.200000e+03
1.200000e+03
1.200000e+03
1.200000e+03
1.200000e+03
1.200000e+03
1.200000e+03
1.200000e+03

您需要先强制转换才能浮动:

[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]
使用它打开文件是一种很好的做法,它将为您处理文件的关闭。此外,int和float可以处理前导或尾随空格,所以您不必担心使用strip

另外,如果您只想拉浮点数,而不想拖地板,
map
是创建浮点数、整数等列表的好方法。。从文件或任何iterable:

 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))

从文件中读取的数据始终为
str
类型,其中所需的参数为浮点

所以你需要把它转换成float

data1c = [int(float(i)) for i in data1]

您可以将字符串强制转换为浮动<代码>数据1=[float(line.strip())表示行输入…]
data1c = [int(float(i)) for i in data1]