python:行中的条件值大于语句

时间:2012-06-26 13:17:07

标签: python text conditional

Python初学者。我有一个文本文件,分为列:

 fields = line.split("\t")

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

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

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

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

4 个答案:

答案 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])):

我们做了几件事:

  1. 使用切片运算符
  2. 检索正确的列
  3. 将所有这些值映射到布尔值(使用95测试float())
  4. 检查测试的所有结果是否为真。

答案 3 :(得分:1)

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

if max(fields[3:23]) > 95: