1

Python初学者在这里。我有一个按列排序的文本文件:

 fields = line.split("\t")

我试图询问第 3 到 23 列中的任何值是否大于 95。所有列都包含单个浮点数,例如 94.522342 或 99.2321321。到目前为止我所拥有的似乎不起作用:

    if (int(fields(3:23)) >= 95):

当我试图要求检查每一列时,我认为问题出在 (3:23) 部分。

任何帮助都非常感谢,谢谢!

4

4 回答 4

5

您的代码有两个问题: 您正在将列表与数字进行比较,这并没有给出有意义的结果。您正在使用int()解码浮点数 -float()改为使用:

if any(float(x) >= 95 for x in fields[3:23]):

请注意,这将检查第四列(索引 3)到第 23 列(索引 22)。根据需要调整切片。

于 2012-06-26T13:19:10.720 回答
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

于 2012-06-26T13:19:19.503 回答
1

使用any内置

if any(map(lambda x: float(x) >= 95, fields[3:23])):

我们做了几件事:

  1. 使用切片运算符检索正确的列
  2. 将所有这些值映射到布尔值(针对 95 测试 float())
  3. 检查所有测试结果是否为真。
于 2012-06-26T13:19:33.473 回答
1

如果您只想要任何价值,请尝试:

if max(fields[3:23]) > 95:
于 2012-06-26T13:20:56.883 回答