Python初学者。我有一个文本文件,分为列:
fields = line.split("\t")
我试图询问第3列到第23列中的任何值是否大于95.所有列都包含单个浮点数,例如94.522342或99.2321321。到目前为止,我所做的似乎并没有起作用:
if (int(fields(3:23)) >= 95):
我认为问题在于(3:23)部分,当我试图要求检查每一栏时。
任何帮助非常感谢, 谢谢!
答案 0 :(得分:4)
您的代码存在两个问题:您正在将列表与数字进行比较,这不会产生有意义的结果。并且您使用int()
来解码浮点数 - 请改用float()
:
if any(float(x) >= 95 for x in fields[3:23]):
请注意,这将检查第四列(索引3)到第23列(索引22)。根据需要调整切片。
答案 1 :(得分:1)
它的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
答案 2 :(得分:1)
使用any
builtin:
if any(map(lambda x: float(x) >= 95, fields[3:23])):
我们做了几件事:
答案 3 :(得分:1)
如果您只想要任何值,请尝试:
if max(fields[3:23]) > 95: