###前提
sumによるテキストファイルの行数カウント方法の仕組みが知りたい
お世話になります。
テキストファイルの行数をカウントしようと思い、当初は以下の方法で実装していました。
###実装ソースコード
python
1f = open('text.txt', 'r') 2string = f.readlines() 3print(len(string))
ところが、調べているうちに、以下の方法でもカウント可能なことがわかりました。
###第三者のソースコード
python
1print(sum(1 for i in open('hightemp.txt', 'r')))
参考:How to get line count cheaply in Python?
###疑問・試したこと
率直に申しまして、このsumによるカウント方法の仕組みが知りたいです。
なぜこれでカウントできるのでしょうか。
簡単な検証方法として以下を試しました。
python
1test = ['a', 'b', 'c', 'd', 'e'] 2 3print(sum(1 for i in test)) 4# 結果:5 5print(sum(2 for i in test)) 6# 結果:10 7print(sum(3 for i in test)) 8# 結果:15
###個人的に導き出した結論
「ジェネレータ式で生成されたジェネレータオブジェクトの総数にforの前に書かれている数を掛け合わせた結果が出力」
上記の理解で正しいのでしょうか。
Python初学者のためsumの動き、ジェネレータ式の動きをしっかりと把握していない部分もあるかと思います。
至らぬところがあると思いますが、誤解、間違い等の箇所があれば是非ご指摘いただきたいです。
よろしくお願いいたします。
参考:組み込み関数:sum
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/05 08:10
2018/01/05 08:24
2018/01/05 08:55
2018/01/05 23:23
2018/01/06 02:09
2018/01/06 03:27