はじめに
コジマです。
最近Pythonの記事をずっと書こうと思って
何書こうか考えながらずっと形にできずにいました。
Pythonを勉強し始めてから他言語との文化の違いを感じた一つがfor文でした。
for(i = 1;i < 10;i++){
hogehoge;
}
のような書き方ばかり見てきたのでちょっと戸惑いました。
ちょこちょこ色んな言語触ってるけどPythonに今手を出してるんだよね、くらいの人に
ちょうどいい記事になると思います。
実際Pythonではどのように書くのか見ていきましょう。
for文の書き方
Pythonではこんな感じで書きます。
処理
行末に:が入るのと、括弧がなくインデントでループ内処理の影響範囲を決定しているのは
Pythonのお作法です。
そこはとにかく慣れるしかないですね。
慣れると括弧を入力する手間が省けるし、意外とコードも見やすくなるので
個人的には気に入ってます。
特徴的なのはinを使うところですね。
他の言語でもinを使ってループするのがないわけではないんですが、
上述した私が慣れたforの書き方とは違います。
こういうのは例がいっぱいある方が分かりやすかったりするので、
サンプルをいくつか見ながら掘り下げていくことにしましょう。
サンプル集
いくつかサンプルを置きますので、勉強にお役立ていただければと思います。
1:10回のループ
#sample1 10回のループ #range(ループ回数) for i in range(10): print(i)
一番シンプルな使い方。
Rangeオブジェクトを使用します。
range(10)のように書いたときは0からはじまり、10回実行して終わります。
他言語で言うところのfor(i = 0;i < 10;i++){}に同義で
終端の数は含まないことに注意が必要です。
2:始まりの数を変更してループ
#sample2 始まりの数字を変更してループ #range(始まりの数字,終わりの数字) for i in range(1,10 + 1): print(i)
range(1,10)のように書くことで始まりの数値を指定することができます。
終端は含まないので、10をprintするために1を足しています。
3:2ずつ増やしてループ
#sample3 2ずつ増やしてループ #range(始まりの数字,終わりの数字,飛ばす数) for i in range(0,10,2): print(i)
rangeに3つ目の引数を与えることで数を飛ばすことができます。
この場合2を指定したのでループの中の数字が2ずつ増えていきます。
3を指定すれば3ずつ増えます。
飛ばす数字を指定する場合、始まりの数字が0でも省略することはできません。
4:カウントダウン
#sample4 カウントダウン #飛ばす数に負の値を入れると減らすことができる for i in range(10,0,-1): print(i)
3つ目の引数に負の値を入れることで数を減らしていくこともできます。
5:文字列を読み込む
#sample5 文字列を読み込む #文字列を一文字ずつ読んでいくことができる str = "Hello World!" for s in str: print(s)
文字列もループできます。始まりの文字から1文字ずつ読んでいきます。
6:リストを読み込む
#sample6 -1リストを読み込む #リストの要素が数値の場合 list1 = [1,10,100,1000] for l in list1: print(l)
#sample6-2 リストを読み込む #リストの要素が文字列の場合 list2 = ["浜田","松本","遠藤","田中","山崎"] for l in list2: print(l)
リストの要素を一つずつループさせることができます。
数値でも文字列でも大丈夫です。
7:タプルを読み込む
#sample7-1 タプルを読み込む #タプルの要素が数値の場合 tuple1 = (1,10,100,1000) for t in tuple1: print(t)
#sample7-2 タプルを読み込む #タプルの要素が文字列の場合 tuple2 = ("高身長","高学歴","高収入","イケメン","優しい") for t in tuple2: print(t)
タプルもリストのようにループさせることができます。
リストもタプルも使い方がなんとなく似ている。
リストはミュータブル(変更可能)、タプルはイミュータブル(変更不可能)なのだ。
一般的に使われるのはリストで、定数のように要素の順番や値を変更なく使いたいときはタプルだね!
今の所実装でタプルをあまり見てないけど、numpyのarray.shapeのように戻り値の型がタプルのものはよく見るのでちゃんと区別できるようにしたほうがいいと思うの!
8:辞書型を読み込む
#sample8-1 辞書型を読み込む #dict.keys()でキーを取得 dict = {"霜降り明星":1,"和牛":2,"ジャルジャル":3} for k in dict.keys(): print(k)
#sample8-2 辞書型を読み込む #dict.values()で値を取得 dict = {"霜降り明星":1,"和牛":2,"ジャルジャル":3} for v in dict.values(): print(v)
#sample8-3 辞書型を読み込む #dict.()で値を取得 dict = {"霜降り明星":1,"和牛":2,"ジャルジャル":3} for k,v in dict.items(): print("{}、{}位".format(k,v))
辞書型もループできます。
keys()メソッドでキーだけ、values()メソッドで値だけ、items()メソッドで両方取得できます。
items()を使う場合はループ内変数をカンマつなぎで2つ定義すると別々に扱うことができます(便利!)
ちなみに1つだけでも動きます。そのときは辞書型の要素がタプル型で出てきます。
さいごに
Python初記事なので簡単なところからw
学習は進めているので、小出しにしていけたらと思います!
サンプルソースはgistに上げてみました。
初学者は是非参考にしてください。
この記事が面白いと思ってくれたら是非Twitter(@kojimanotech)のフォローもお願いします!
もっと学びたい人はこちら
Python、機械学習をもっと学びたいという人のためにおすすめのUdemy講座を紹介いたします!
Pythonの基本文法を押さえたい方はこちらの動画がおすすめです。
エンジニアになりたいと思って駆け出した方がPythonを選んだときはこの講座から始めるとよいと思います。
Python 3 エンジニア認定基礎試験の対策にもなります。
はじめてのPython 少しずつ丁寧に学ぶプログラミング言語Python3のエッセンス
プログラムの基礎が分かる方で機械学習に興味がある方はこちらがおすすめです。
SIGNATEという日本版Kaggleのサービスを実際に使用してハンズオン形式でデータ分析・機械学習を学ぶことができます。
もちろんこの動画だけで特級のデータサイエンティストになれるわけではないですが、機械学習の門を叩くにはとても良い講座だと思います。
【ゼロから始めるデータ分析】 ビジネスケースで学ぶPythonデータサイエンス入門
Pythonのライブラリで必ず押さえておきたいのがNumpy, Pandas, Matplotlibの3つ。
この3つを網羅的に学ぶことができる講座です。
英語の講座ですが、わかりやすい英語ですし、ソースコードメインで解説しているので
ソースコードを一緒に手を動かしながら学べば十分理解することができます。
機械学習を使わない人にもおすすめの講座です。
2021 NumPy, Pandas and Matplotlib A-Z™: for Machine Learning
気になった人はぜひ見てみてくださいね!
以上、コジマでした。