こんにちは。倉内です。
Pythonは基本的な文法がシンプルで、初めてプログラミング学習をする方でも比較的理解しやすい言語です。
どのプログラミング言語にも共通の概念から、Python特有のものまでさまざまですが、基本を学ぶ中で習得しておきたいのが「リスト内包表記」です。
ただ、プログラミング初心者にとっては、独学で理解しようと思うとちょっと難しく、またその記法を使わずとも処理を実現できるため後回しになりがちでもあります。
そこで今回は、paizaラーニングの動画学習講座「新・Python入門編」に追加された新レッスン「リスト内包表記を学習しよう」を用いてしっかりリスト内包表記について学んでいこうと思います!
学習講座「新・Python入門編」
paizaラーニングは、Webブラウザとインターネットさえあればすぐにプログラミング学習がスタートできる動画学習サービスです。
特徴として、画面が以下のとおり分割されているため、動画で学びながら実際にコードを書くというインプット・アウトプットの両方ができるという点があります。
もし「今から初めてPythonを学ぶ!」という場合は、リスト内包表記のレッスンを受講する前に、レッスン1~13を受講していただくとスムーズに取りかかれると思います。
特にレッスン7「リストを学習しよう」は、リスト内包表記を理解するための前提知識となりますので押さえておくとよいでしょう。
今回紹介する「新・Python入門編」は、現在14のレッスンが公開されています。Pythonを初めて学ぶ方が基礎を身につけることのできる講座です。
新しく追加されたレッスン「リスト内包表記を学習しよう」は、冒頭でもお伝えした通りリスト内包表記を学べる内容になっており、5つのチャプターから構成されています。
2. 内包表記のルール(1:12)
このチャプターでは、内包表記のルールを学習しましょう。
paizaラーニング「新・Python入門編」レッスン14より
ちなみに、「イテラブル」とは、 forで繰り返し可能なオブジェクトのことです。
3. 内包表記でリストを生成(1:44)
このチャプターでは、内包表記を使ってリストを生成してみましょう。
4. 演算が用いられた内包表記(2:34)
このチャプターでは、内包表記において、リストの各要素を演算がおこなわれた値にする方法を学習しましょう。
5. ifが組み合わせられた内包表記(2:00)
このチャプターでは、内包表記において、if を使ってリストの各要素が満たしているべき条件を指定する方法を学習しましょう。
解説の音声はプロの声優さんが担当しています。動画は概念的な説明だけではなく、実際にコードを書くために必要な知識も得ることができます。
また、演習課題もセットになっているため、インプットしたあとにすぐアウトプットができるのも特徴です。
paizaラーニング「新・Python入門編」レッスン14より
リスト内包表記を使って問題を解こう
ここからは、リスト内包表記を使って実際にプログラミング問題を解く練習ができるコンテンツを紹介します。
解答例のある問題もあるので、初学者の方もぜひ理解を深めるために取り組んでみてください!
動画講座「スキルチェック入門編」
paizaラーニングで公開している「スキルチェック入門編」(全編無料)は、B~Dランク相当のスキルチェック類似問題を動画で解説している講座です。問題文の理解の仕方、解答の方針の立て方から図なども用いてていねいに解説しています。
その中のレッスン3「単語のカウント(Cランク相当)」では、地道に解く方法と合わせて、もっとシンプルな解き方として「リスト内包表記」を使った解答コード例を公開しています。
paizaラーニング「スキルチェック入門編」レッスン3より
練習問題集「レベルアップ問題集」
さまざまなプログラミングの練習問題を集めた「レベルアップ問題集」。その中でも難易度の低い「Dランク早解きセット」から1問ピックアップして紹介します。
ここまでと少し違うタイプの内包表記の使い方ですが参考にしてみてください。
【1】1日1万歩
問題:
あなたは健康のために、1日1万歩を歩くことを目標にしました。
入力として、歩いた距離(km)と歩幅(cm)が与えられるので、
1万歩を歩いているかどうかを判定して結果を出力してください。
入力される値:
入力は以下のフォーマットで与えられます。
d s・d は歩いた距離(km)
・s は歩幅(cm)
期待する出力:
歩数が
・1万歩以上であれば yes
・1万歩より少なければ no
を出力してください。ただし、歩いているときの歩幅は一定であるとします。
条件:
すべてのテストケースにおいて、以下の条件をみたします。
0 ≤ d ≤ 20
30 ≤ s ≤ 100
期待する出力を見ると、「もし1万歩以上であればyesを出力、もし1万歩より少なければnoを出力」と言い換えられるので、まさにif文を使えそうな問題であることが分かります。
その前に、与えられた値(この問題ではd、s)を受け取る処理を理解しておきましょう。
標準入力
Pythonでは input() 関数を使って与えられた値を受け取ります。今回は数値なので map() 関数を使って数値(int)に変換して受け取ることにします。
d,s = map(int, input().split()) print(d) print(s)
実行してみると以下の通り出力され、入力例1の「10 100」が受け取れたことが分かります。
10
100
上記の書き方でもよいですが、標準入力を受け取る際に内包表記を使うと、以下のように書くこともできます。
d,s = [int(x) for x in input().split()] print(d) print(s)
実行結果はさきほどと同じです。
Pythonの標準入力は、動画講座「#05:データの読み込み(標準入力)」でも説明していますのでぜひ参考にしてみてください。
解答コードの例
今回気をつけたいのは歩いた距離dの単位はkmなので、歩幅sの単位cmに合わせて計算するところですね。
歩数は歩いた距離割る歩幅で出せます。
# 歩いた距離dと歩幅sを標準入力で取得 d,s = [int(x) for x in input().split()] # dの単位はkmなのでcmに変換し、歩幅sで割ることで歩数nを算出 n = d * 1000 * 100 / s # 歩数nが1万歩以上か、より小さいかを判定 if(10000 <= n): print("yes") elif(n < 10000): print("no")
この問題の他に「【2】気温の変化」でも同様のコードを書くことができます。
プログラミングゲーム『SILVER BULLET』
paizaでは、プログラミングを楽しく学んでもらいたいという思いから「プログラミングエンタメ」と名付けたコンテンツを多数公開しています。
その中でもプログラミングゲームは。RPGを進めるような感覚で問題を解けることから、初学者の方から現役エンジニアの方まで幅広く遊んでいただいています。
以下の記事ではプログラミングゲーム『SILVER BULLET』で出題している問題を内包表記を使って解く方法を解説しています。
他にもたくさんのプログラミングゲームを公開していますので、「楽しみながらプログラミングを学びたい!」という方は、自分のお気に入りの作品を見つけて取り組んでいただければと思います。一覧はこちら
たとえば、最新作『異能な僕らと異常な世界』やファンタジーな世界観の『エンジニア騎士とクエリの魔女』など楽しみながらプログラミングを学べます。
D~Sランクまでさまざまなタイプの問題を解くことができますので、楽しいだけではなく、しっかり実力アップすることが可能です。解答・解説まとめ記事はこちらから。
実力を試す「スキルチェック」
paizaのスキルチェックとは、難易度によってS・A・B・C・Dランクに分かれているプログラミング問題を制限時間内に解き、結果によってS・A・B・C・D・Eの6段階のランクを取得できるサービスです。
プログラミング学習は、テキストや動画から学ぶだけではなく、どのくらい自分でコードが書けるようになったを試すのも大切です。
目標としては「実用的な実装スキル」と定義しているBランク取得をひとつの指標としてみるとよいでしょう。
ランクのレベル感は以下の通りです。問題解答の言語は現在、Java、PHP、Ruby、Python、Perl、C、C++、C#、JavaScript、Objective-C、Scala、Go、Swift、Kotlinに対応しています。
なお、スキルチェックで取得したランクは、paizaが運営する就活・転職サービスでの求人応募の際に利用*1できます。
上のランクを取得すると、応募可能な求人数が増えるのはもちろん、人気の高い自社サービス企業からスカウトが届く可能性も高くなります。
まとめ
Pythonのリスト内包表記を学べる、「新・Python入門編」講座をご紹介しました。
解き方はひとつではないので、必ずしもリスト内包表記を使用しなければならないわけではありませんが、コードをより簡潔に、また処理にかかるコストを削減できる(処理が速い)という点でも知っておいて損はありません。
paizaにはさまざまなプログラミング学習コンテンツがあるので、ご自分の状況やレベル感に合わせて、いろいろと試しながら学習を進めていただければと思います。
「paizaラーニング」では、未経験者でもブラウザさえあれば、今すぐプログラミングの基礎が動画で学べるレッスンを多数公開しております。
詳しくはこちら
そしてpaizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。
スキルチェックに挑戦した人は、その結果によってS・A・B・C・D・Eの6段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。
詳しくはこちら
*1:paizaはITエンジニア専門の就活・転職サービスです。公開している求人には、企業が求めるレベルに応じて「応募可能ランク」が設定されています。書類や言葉ではなく、「問題を解いて獲得したランク」は、プログラミングスキルや経験の証明にもなります。