リスト内包表記すごいな。8行が1行になった……


このエントリーをはてなブックマークに追加

ここからちょっと広告です。

広告は以上です。

だいたい金曜の夜ですかね、Pythonの勉強できるの。
まあ今年は土曜も仕事が入っているので、週末というわけではないのですが……

ところで、先ほど、とあるフォルダの中のテキストファイル(ファイル名が.txtで終わるファイル)の一覧を作ろうと思って、こんな風に書いたのです。

スクリーンショット 2020-11-27 22.22.00

間違ってない。ちゃんと動いたのでいいのですが、なんか冗長すぎるなあ、どこか削れるところないかなあ、と考えていたら、ふと、リスト内包表記のことを思い出したのです。

リスト内包表記については以前も「リスト内包表記で多次元リストを作る方法」で書きましたが、今回はその部分じゃなくて、

「確か、if文をつけて、結果がTrueのときだけリストに入れる、みたいなことができたはずだ」

ということを思い出したのです。
雰囲気で書くと、

変数 = [式 for 変数名 in 元のデータ if 条件式]

という書き方です。

元のデータの中から、if以降の条件式にマッチしたデータだけが、変数名に入る。
変数名は式のところで計算されるのですが、ここは変数名と式を同じにしておけば、別に計算されない。

条件式のところを「ファイル名が.txtで終わるファイル」とすれば、膨大なファイル群の中から、テキストファイルだけを抽出できるのでは?

で、あれこれいじってできたのがこちら。

スクリーンショット 2020-11-27 22.31.05

8行が1行になりました。
可読性がわからないけど、たぶん便利、な気がする……

ところで今回も、GitHubの中にあったgistってトコにメモっといたのですが、

https://gist.github.com/kotoripiyopiyo/ba1cf2f847d24d4f0248c7494c1fb1e3

GitHubの使い方を激しく間違っていやしないかと、少し心配しています。
いつかGitHubそのものについても時間をかけてある程度把握したいな……

Ads by Google

コメント

コメントは、Twitterやはてブに、以下のボタンから本記事のアドレスつきでツイート/ブクマしていただくと、上にあるzenbackのウィジェットに反映されます。
  このエントリーをはてなブックマークに追加
または同ウィジェット内のFacebookコメントでお願いしますー。

Facebookのシェアは……されても誰だかわからないのですが、シェア自体は嬉しいので、下にボタンを置かせていただきます。よろしくお願いします。