こんにちわ!この記事はPythonの初学者のための内容となっております。
- all文、any文について詳しく知りたい
- 組み込み関数をもっと知りたい
という方向けの内容です。
また、包括表記についての理解も必要なので次の記事も参考にしてみてください。
それでは頑張っていこう!
コンテンツ
プログラミングスクールに関しては下の記事で詳しく記述しています。
こちらで紹介しているスクールは、すべて無料期間がある優良なスクールのみで、特徴を明確にし、読者のニーズに絞って丁寧に解説しました。初めての一歩として、無料説明会に参加してみてください。
「all」文の基本
「all」文の使い方
1 2 3 4 5 |
a, b, c = True, True, False print(all([a, b, c])) # False |
いずれかの要素が「False」だった場合、結果も「False」になります。
「all」文の引数に与えるのは、リストやタプル、「set」や「dict」なんでも大丈夫です。それらを混合させて記述することも可能です。
1 2 |
all((リスト、タプル、集合)) |
しかし、「all」や「any」文に与える引数は1つに限定されます。
1 2 3 4 5 6 7 8 9 |
a, b, c = True, True, False print(all([a, b, {a, b}])) # True print(all([a], [b], [c])) # TypeError # all() takes exactly one argument (3 given) |
余談ですが、空のリストも実行することが出来ます。
1 2 3 |
print(all([])) # True |
「all」文のプログラム的解釈
「all」文は数学で言う「かつ」ですので、すべての要素が「True」の時、条件が成り立ちます。
1 2 3 4 5 6 |
def all(iterable): for element in iterable: if not element: return False return True |
よって、先ほどの空のデータに対して「all」文を用いた結果は「True」になります。
「any」文の基本
「any」文の使い方
1 2 3 4 5 |
a, b, c = True, True, False print(any([a, b, c])) # True |
いずれかの要素が「True」だった場合、結果も「True」になります。
「any」文の引数に与えるのも、リストやタプル、「set」や「dict」なんでも大丈夫です。それらを混合させて記述することも可能です。
空のリストを実行すると以下のような結果になります。
1 2 3 |
print(any([])) # False |
「any」文のプログラム的解釈
「any」文は数学で言う「または」ですので、いずれかの要素が「True」の時、条件が成り立ちます。
1 2 3 4 5 6 |
def any(iterable): for element in iterable: if element: return True return False |
よって、先ほどの空のデータに対して「any」文を用いた結果は「False」になります。
組み込み関数と内包表記の利用
「all」や「any」が分かっただけではあまり使えないので、利用方法を見ていきましょう。
1 2 3 4 5 6 7 |
l = [2, 4, 6, 8, 9] print(all([i % 2 == 0 for i in l])) # False print(any([i > 5 for i in l])) # True |
「not」を利用することも可能です。
1 2 3 4 5 6 7 |
l = [2, 4, 6, 8, 9] print(not all([i % 2 == 0 for i in l])) # True print(not any([i > 5 for i in l])) # False |
内包表記を用いることで処理速度が速くなります。
実際に処理速度を求めませんが、「all」文や「any」文では、条件を満たす(または満たされない)とわかったときに処理を終了するので、無駄な計算をなくせる場合があり、単純な「for」文と「if」文を組み合わせたものよりも早くなります。
まとめ
今回は、「all」文と「any」文についてと、それらを利用した内包表記についての記述でした。
「すべての要素が条件に当てはまるとき」をプログラムで書く時には、今までは、何か別の変数を利用する必要がありましたが、これからは1行で書けるようになりました。
また、内包表記を用いることで処理速度も速くなる傾向があるので、積極的に利用していきたいですね!
本日の理解度調査
今日の最後に理解度調査をします!!
どうすれば正しくなるのか考えてみてね!!
Q. すべての値が5以上の時「False」を返す関数を作成せよ。
1 2 3 4 5 6 7 8 9 |
def gudge(List): return ??? # ここはどんな処理になるかな print(gudge([1, 8, 3, 5, 1])) # True print(gudge([6, 8, 10])) # False |
正解は。。。
1 2 |
return not all([i >= 5 for i in List]) |
わかったかな??正解出来たら今回の項目は完璧だね!!
最後まで記事を読んでいただきありがとうございます!
昔、自分が参考にしていたプログラミングについての書籍を紹介します。
非常にわかりやすい内容で、言語は「Java」ですが参考にしてみてください!
「Python」じゃないんかい!
プログラミングスクールに関しては下の記事で詳しく記述しています。
こちらで紹介しているスクールは、すべて無料期間がある優良なスクールのみで、特徴を明確にし、読者のニーズに絞って丁寧に解説しました。初めての一歩として、無料説明会に参加してみてください。