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

コードには 2 つの問題があります。リストを数値と比較しているため、意味のある結果が得られません。そして、int()浮動小数点数をデコードするために使用しています –float()代わりに以下を使用してください:

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

これは、4 番目の列 (インデックス 3) から 23 番目の列 (インデックス 22) までを調べることに注意してください。必要に応じてスライスを調整します。

于 2012-06-26T13:19:10.720 に答える
1

任意の値が必要な場合は、次を試してください。

if max(fields[3:23]) > 95:
于 2012-06-26T13:20:56.883 に答える
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. これらすべての値をブール値にマップします (float() を 95 に対してテストします)。
  3. テストのすべての結果が True であることを確認します。
于 2012-06-26T13:19:33.473 に答える