Python 3 エンジニア認定実践試験対策3.5. Pythonの言語仕様 – 内包表記、ジェネレーター式

投稿日:

更新日:

カテゴリ:

早速ですが、Pythonの判定付きリスト内包表記の例を見てください。

>>> list1 = [i**2 for i in range(10) if i % 2 == 0]
>>> list1
[0, 4, 16, 36, 64]

if文を後ろに置くのはrubyに似てますね。条件のカッコもなくていいなんて、、いいですね〜ワールドですね〜

まあ、話を戻して、「for…in 配列」のループは、本来ループ内の処理はその次に書きますが、内包表記は「ループ内処理 for…in 配列」のように理解すればいいかもしれません。

要点

テキストの「3.5 内包表記、ジェネレーター式」の内容について、自分なりにまとめた要点は以下です。

うまい表現はなく、ソースが大半になってしまいました。ご参考になれば嬉しいです。

ネストしたリストの内包表記の補足

forのネスト階層を以下のようにもう一つ増やしてみました。それでも普通にできますね。

>>> drinks = ['coffee', 'tea', 'Espresso']
>>> sizes = ['S', 'M', 'L']
>>> a = ['1', '2', '3']
>>> menu = [(drink, size, l) for drink in drinks for size in sizes for l in a]
>>> menu
[('coffee', 'S', '1'), ('coffee', 'S', '2'), ('coffee', 'S', '3'), ('coffee', 'M', '1'), ('coffee', 'M', '2'), ('coffee', 'M', '3'), ('coffee', 'L', '1'), ('coffee', 'L', '2'), ('coffee', 'L', '3'), ('tea', 'S', '1'), ('tea', 'S', '2'), ('tea', 'S', '3'), ('tea', 'M', '1'), ('tea', 'M', '2'), ('tea', 'M', '3'), ('tea', 'L', '1'), ('tea', 'L', '2'), ('tea', 'L', '3'), ('Espresso', 'S', '1'), ('Espresso', 'S', '2'), ('Espresso', 'S', '3'), ('Espresso', 'M', '1'), ('Espresso', 'M', '2'), ('Espresso', 'M', '3'), ('Espresso', 'L', '1'), ('Espresso', 'L', '2'), ('Espresso', 'L', '3')]

余談

このシリーズの記事にあるマインドマップはMindNodeというアプリを使って作っています。

一昨日そのアプリを開いたら、何故か突然アプリが壊れているとポップアップが出て、アプリが起動できませんでした。

当時スクショを取っていなかったので、以下はネット(参考2)から借りたものですが、確かこんな感じのアラートでした。

2回ほど起動してみたら、同じアラートで終わったので、言われた通りにAppStoreからダウンロードし直そうとして、AppStoreで検索したら、MindNodeというアプリが見つかりませんでした。

あれ?!確か自分はAppStoreからダウンロードしたんですけど、どういうこと?と思い、公式サイトにあるAppStoreへのリンクを辿っても、アプリがないと言われるだけです。

そこは素直に諦めて別のマインドマップアプリを探してXmindを使ってみましたが、MindNodeはアンインストールせずにそのままにしておきました。

そしたら、今日試しにMindNodeを起動してみたら、無事起動ができました!!Xmindよりも、MindNodeのほうの見た目が好みですので、良かったです!

 

完全事後調査ですが、参考1や2のページも見つかりました。原因は証明書の期限切れかもしれませんね。

似た事象が起きたら、しばらく置いたら治るかもしれません。

参考

  1. MindNode doesn’t launch or says it’s damaged. What now?
  2. MacAppStoreで購入したアプリが「”このアプリ”は壊れているため開けません」というエラーで起動しなくなった場合の対処法。

投稿日

カテゴリー:

投稿者:

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です