質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

470閲覧

指定した範囲の数値とその個数を出力したい

退会済みユーザー

退会済みユーザー

総合スコア0

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2022/11/15 09:47

編集2022/11/15 20:28

実現したいこと

test.txtのファイルの中身の数値から
0から0.2
0.2から0.4
0.4から0.6
0.6から0.8
0.8から1.0
の数値を出力とそれぞれの数値の範囲の個数のカウントをしたいです。

発生している問題・エラーメッセージ

print(list1 > my_float) TypeError: '>' not supported between instances of 'list' and 'float'

該当のソースコード

python

1 2 with open("test.txt", "r)as f: 3 print(path+".txt")  4 data=f.readlines()[1:60] 5   #↑test.txtの中身は1から60行あります 6 print(data) 7 list1=[data] 8 my_float=0.6 9 print(list1 > my_float)

test.txtの中身

0.755229
0.688727
0.660857
0.725014
0.609122
0.667595
0.664538
0.64256
0.647082
0.591497
0.55077
0.612957
0.83207
0.67802
0.701618
0.908475
0.659222
0.534892
0.661645
0.552581
0.790303
0.727885
0.69056
0.579366
0.681916
0.441917
0.626703
0.790303
0.685454
0.796727
0.728756
0.492767
0.789395
0.720935
0.582183
0.568498
0.580289
0.725347
0.740118
0.663689
0.694524
0.448931
0.764399
0.71526
0.487369
0.717317
0.600473
0.615127
0.60676
0.574313
0.378411
0.370908
0.73546
0.636587
0.847458
0.412695
0.643728
0.681713
0.5
0.593561

試したこと

まず、0.7以下の数値を取り出すことを目指しましたが上記のエラーがでます

https://bobbyhadz-com.translate.goog/blog/python-typeerror-not-supported-between-instances-of-list-and-float?_x_tr_sl=en&_x_tr_tl=ja&_x_tr_hl=ja&_x_tr_pto=sc
こちらのサイトを参考にしましたが、エラーが吐いている状態です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TakaiY

2022/11/15 09:58

「test.txtの中身」が実際と異なる見た目になっていると思われます。 test.txtの中身を、ソースコードと同じように囲っていただけますか。
退会済みユーザー

退会済みユーザー

2022/11/15 10:01

0.755229 0.688727 0.660857 0.725014 0.609122 0.667595 0.664538 0.64256 0.647082 0.591497 0.55077 0.612957 0.83207 0.67802 0.701618 0.908475 0.659222 0.534892 0.661645 0.552581 0.790303 0.727885 0.69056 0.579366 0.681916 0.441917 0.626703 0.790303 0.685454 0.796727 0.728756 0.492767 0.789395 0.720935 0.582183 0.568498 0.580289 0.725347 0.740118 0.663689 0.694524 0.448931 0.764399 0.71526 0.487369 0.717317 0.600473 0.615127 0.60676 0.574313 0.378411 0.370908 0.73546 0.636587 0.847458 0.412695 0.643728 0.681713 0.5 0.593561 このようになっています
TakaiY

2022/11/15 10:06

質問は編集できるので、ここではなく、質問に追記してください。
退会済みユーザー

退会済みユーザー

2022/11/15 10:53

修正しました
guest

回答1

0

ベストアンサー

pythonは初心者とお見受けしますが、この処理をpythonで書いているのはなぜですか?
pythonの勉強ということであれば続けてもいいと思いますが、業務であればまずは別の方法を模索すべきと思います。

pythonの勉強を兼ねるのであれば、まずは、pythonの初歩の書籍などを一通りやって内容を理解するのをお勧めします。

以下、コメントです。
■ data=f.readlines()[1:60]
これはどのような意図で書いていますか?

■ list1=[data]
これは、リストであるdataをさらにリストに入れてlist1として参照できるようにしていますが、意図どおりですか?

■ print(list1 > my_float)
エラーにあるようにリスト(list1)と浮動小数(my_float)を比較しているのでエラーになります。読み込んだデータの値を比較したいのだと思いますが、比較の対象が間違えています。
また、比較した結果をprintしようとしていますが、作っている途中だからでしょうか。


追記
「data=f.readlines()[1:60]」の [1:60]は不要です。 長いリストから一部を取り出すために使う構文です。また、 リストのインデックスは0始まりですから、これでは先頭の行が抜けてしまいます。

この段階で、 dataは以下のようなリストになっています。
['0.755229\n', '0.688727\n', '0.755229\n', '0.688727\n', ....]
すでにリストになっているのでここで加工する必要はありません。 ただし、1) 文字列として読み込まれていること 2) 末尾に改行文字が付いていること に注意が必要です。

以降の処理 はすべて変更で、この後、
■ 結果格納用の空のリストを作る。 必要分だけ。(「まず、0.7以下の数値を取り出すことを目指」すのであれば1つだけ)
■ リストから1つずつ取り出すループを始める
■■ 末尾の改行を取り除く
■■ 文字列を数値に変換する
■■ 条件判定 (「まず、0.7以下の数値を取り出すことを目指」すのであれば1つだけ)
■■■ あてはまれば結果格納用のリストに追加
■ ループが終れば必要であれば結果を出力

まあ、こんな感じでできるでしょう。
各要素については、検索すればやりかたは出ています。

投稿2022/11/15 10:05

編集2022/11/15 11:28
TakaiY

総合スコア12657

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2022/11/15 10:50 編集

■ data=f.readlines()[1:60] これはどのような意図で書いていますか? 他サイトで指定した範囲の行を出力できると記載されてたので、そちらを利用しました。 ■ list1=[data] これは、リストであるdataをさらにリストに入れてlist1として参照できるようにしていますが、意図どおりですか? ご指摘の通り初心者なので、その認識はなかったです。意図通りではないです。 ■ print(list1 > my_float) エラーにあるようにリスト(list1)と浮動小数(my_float)を比較しているのでエラーになります。読み込んだデータの値を比較したいのだと思いますが、比較の対象が間違えています。 また、比較した結果をprintしようとしていますが、作っている途中だからでしょうか。 はい、作っている途中です。 listと浮動小数を比較してエラーがでる点は そもそも読み込んだデータの値をリストにいれていることが間違いないですか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問