Python初学者在这里。我有一个按列排序的文本文件:
fields = line.split("\t")
我试图询问第 3 到 23 列中的任何值是否大于 95。所有列都包含单个浮点数,例如 94.522342 或 99.2321321。到目前为止我所拥有的似乎不起作用:
if (int(fields(3:23)) >= 95):
当我试图要求检查每一列时,我认为问题出在 (3:23) 部分。
任何帮助都非常感谢,谢谢!
Python初学者在这里。我有一个按列排序的文本文件:
fields = line.split("\t")
我试图询问第 3 到 23 列中的任何值是否大于 95。所有列都包含单个浮点数,例如 94.522342 或 99.2321321。到目前为止我所拥有的似乎不起作用:
if (int(fields(3:23)) >= 95):
当我试图要求检查每一列时,我认为问题出在 (3:23) 部分。
任何帮助都非常感谢,谢谢!
您的代码有两个问题: 您正在将列表与数字进行比较,这并没有给出有意义的结果。您正在使用int()
解码浮点数 -float()
改为使用:
if any(float(x) >= 95 for x in fields[3:23]):
请注意,这将检查第四列(索引 3)到第 23 列(索引 22)。根据需要调整切片。
它的fields[3:23]
,这会返回一个列表,您不能将列表与整数进行比较
由于您是 python 新手,我建议使用 for 循环:
for x in fields[3:23]:
if float(x)>=95:
#do_something here
else:
#do something else
或者一个班轮将是:
if max(map(float,fields[3:23]))>=95
使用any
内置:
if any(map(lambda x: float(x) >= 95, fields[3:23])):
我们做了几件事:
如果您只想要任何价值,请尝试:
if max(fields[3:23]) > 95: