-
-
Save St-Hakky/c1efc160b3a2a7c2b6a77d1cdd093d38 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"toc": "true" | |
}, | |
"source": [ | |
"# Table of Contents\n", | |
" <p><div class=\"lev1 toc-item\"><a href=\"#Loops-(while/for/内包表記)\" data-toc-modified-id=\"Loops-(while/for/内包表記)-1\"><span class=\"toc-item-num\">1 </span>Loops (while/for/内包表記)</a></div><div class=\"lev2 toc-item\"><a href=\"#while\" data-toc-modified-id=\"while-11\"><span class=\"toc-item-num\">1.1 </span>while</a></div><div class=\"lev2 toc-item\"><a href=\"#for\" data-toc-modified-id=\"for-12\"><span class=\"toc-item-num\">1.2 </span>for</a></div><div class=\"lev2 toc-item\"><a href=\"#少し書き方が特殊なループ\" data-toc-modified-id=\"少し書き方が特殊なループ-13\"><span class=\"toc-item-num\">1.3 </span>少し書き方が特殊なループ</a></div><div class=\"lev1 toc-item\"><a href=\"#内包表記\" data-toc-modified-id=\"内包表記-2\"><span class=\"toc-item-num\">2 </span>内包表記</a></div>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# Loops (while/for/内包表記)\n", | |
"\n", | |
"JuliaのLoopは、どうもこの2つみたいなので、これについて勉強します。" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## while\n", | |
"\n", | |
"whileを用いたループ処理は、以下のような形で書く。\n", | |
"\n", | |
"```\n", | |
"while *condition*\n", | |
" *loop*\n", | |
"end\n", | |
"```" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": { | |
"ExecuteTime": { | |
"end_time": "2018-02-07T11:22:25.394000Z", | |
"start_time": "2018-02-07T02:22:24.462Z" | |
} | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"1\n", | |
"2\n", | |
"3\n", | |
"4\n", | |
"5\n", | |
"6\n", | |
"7\n", | |
"8\n", | |
"9\n", | |
"10\n" | |
] | |
} | |
], | |
"source": [ | |
"i = 0\n", | |
"# pythonだと、コロンをつけるが、juliaはendでwhileの終わりを判定しているので、つけない。。。\n", | |
"# 違和感。。。\n", | |
"while i < 10\n", | |
" i += 1\n", | |
" println(i)\n", | |
"end" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": { | |
"ExecuteTime": { | |
"end_time": "2018-02-07T11:22:27.462000Z", | |
"start_time": "2018-02-07T02:22:27.439Z" | |
} | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"apple\n", | |
"banana\n", | |
"orange\n" | |
] | |
} | |
], | |
"source": [ | |
"fruits = [\"apple\", \"banana\", \"orange\"]\n", | |
"\n", | |
"i = 1\n", | |
"while i <= length(fruits)\n", | |
" println(fruits[i])\n", | |
" i += 1\n", | |
"end" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## for\n", | |
"\n", | |
"以下のような形で書く。\n", | |
"\n", | |
"```\n", | |
"for *var* in *loop iterable*\n", | |
" *loop body*\n", | |
"end\n", | |
"```\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": { | |
"ExecuteTime": { | |
"end_time": "2018-02-07T11:22:29.506000Z", | |
"start_time": "2018-02-07T02:22:29.495Z" | |
} | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"1\n", | |
"2\n", | |
"3\n", | |
"4\n", | |
"5\n" | |
] | |
} | |
], | |
"source": [ | |
"# for loopはPythonに似たような感じの使い方ができる。\n", | |
"# こちらも、コロンではなくて、endで、ループのbodyの箇所を判定する\n", | |
"for i = 1:5\n", | |
" println(i)\n", | |
"end" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": { | |
"ExecuteTime": { | |
"end_time": "2018-02-07T11:22:31.366000Z", | |
"start_time": "2018-02-07T02:22:31.352Z" | |
} | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"apple\n", | |
"banana\n", | |
"orange\n" | |
] | |
} | |
], | |
"source": [ | |
"# iterableであればいいので、配列のループもできる\n", | |
"fruits = [\"apple\", \"banana\", \"orange\"]\n", | |
"\n", | |
"for i in fruits\n", | |
" println(i)\n", | |
"end" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": { | |
"ExecuteTime": { | |
"end_time": "2018-02-07T11:22:33.080000Z", | |
"start_time": "2018-02-07T02:22:33.062Z" | |
} | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"apple\n", | |
"banana\n", | |
"orange\n" | |
] | |
} | |
], | |
"source": [ | |
"# タプルもできる\n", | |
"fruits = (\"apple\", \"banana\", \"orange\")\n", | |
"\n", | |
"for i in fruits\n", | |
" println(i)\n", | |
"end" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"metadata": { | |
"ExecuteTime": { | |
"end_time": "2018-02-07T11:22:34.702000Z", | |
"start_time": "2018-02-07T02:22:34.534Z" | |
} | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"orange は 3 個あります\n", | |
"banana は 2 個あります\n", | |
"apple は 1 個あります\n" | |
] | |
} | |
], | |
"source": [ | |
"# 辞書も試してみる。\n", | |
"fruits = Dict(\"apple\" => 1, \"banana\" => 2, \"orange\" => 3)\n", | |
"\n", | |
"# ちなみに、カッコをつけないとエラーになるので注意\n", | |
"for (k, v) in fruits\n", | |
" println(\"$k は $v 個あります\")\n", | |
"end" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"metadata": { | |
"ExecuteTime": { | |
"end_time": "2018-02-07T11:22:37.320000Z", | |
"start_time": "2018-02-07T02:22:37.294Z" | |
} | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"a\n", | |
"p\n", | |
"p\n", | |
"l\n", | |
"e\n" | |
] | |
} | |
], | |
"source": [ | |
"# 文字列のループも試してみる\n", | |
"apple = \"apple\"\n", | |
"\n", | |
"# pythonと同じくこれもiterableなので、できる。\n", | |
"for i in apple\n", | |
" println(i)\n", | |
"end" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## 少し書き方が特殊なループ\n", | |
"\n", | |
"Pythonとは少し違う書き方をするループの書き方を見ておきます。" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"metadata": { | |
"ExecuteTime": { | |
"end_time": "2018-02-07T11:22:39.189000Z", | |
"start_time": "2018-02-07T02:22:39.057Z" | |
} | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"(1, 2)\n", | |
"(1, 3)\n", | |
"(2, 2)\n", | |
"(2, 3)\n" | |
] | |
} | |
], | |
"source": [ | |
"# 2つ以上の配列をループする\n", | |
"# この書き方をすると、Pythonだと2重ループみたいに書かないといけないところが、一行でかけるようになる。\n", | |
"for i = 1:2, j = 2:3\n", | |
" println((i, j))\n", | |
"end" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 9, | |
"metadata": { | |
"ExecuteTime": { | |
"end_time": "2018-02-07T11:22:40.731000Z", | |
"start_time": "2018-02-07T02:22:40.710Z" | |
} | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"(1, 2)\n", | |
"(1, 3)\n", | |
"(1, 4)\n", | |
"(1, 5)\n", | |
"(2, 2)\n", | |
"(2, 3)\n", | |
"(2, 4)\n", | |
"(2, 5)\n" | |
] | |
} | |
], | |
"source": [ | |
"# 1つのループではないので、以下のように要素の数が違っていても良い。\n", | |
"for i = 1:2, j = 2:5\n", | |
" println((i, j))\n", | |
"end" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 10, | |
"metadata": { | |
"ExecuteTime": { | |
"end_time": "2018-02-07T11:22:40.917000Z", | |
"start_time": "2018-02-07T02:22:40.888Z" | |
} | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"(1, 3)\n", | |
"(2, 4)\n" | |
] | |
} | |
], | |
"source": [ | |
"# 同時にループを回したい場合は、zip関数を使う\n", | |
"for (i, j) in zip(1:2, 3:4)\n", | |
" println((i, j))\n", | |
"end" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# 内包表記\n", | |
"\n", | |
"pythonでは非常によく使う内包表記だが、これをJuliaでもできるので、試す" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 11, | |
"metadata": { | |
"ExecuteTime": { | |
"end_time": "2018-02-07T11:22:43.769000Z", | |
"start_time": "2018-02-07T02:22:42.758Z" | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"3-element Array{String,1}:\n", | |
" \"apple\" \n", | |
" \"banana\"\n", | |
" \"orange\"" | |
] | |
}, | |
"execution_count": 11, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"# なんの意味もない例だが、以下のようにできる\n", | |
"fruits = [i for i in [\"apple\", \"banana\", \"orange\"]]" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 12, | |
"metadata": { | |
"ExecuteTime": { | |
"end_time": "2018-02-07T11:22:44.678000Z", | |
"start_time": "2018-02-07T02:22:42.894Z" | |
}, | |
"scrolled": true | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"100×100 Array{Int64,2}:\n", | |
" 102 103 104 105 106 107 108 109 … 195 196 197 198 199 200 201\n", | |
" 103 104 105 106 107 108 109 110 196 197 198 199 200 201 202\n", | |
" 104 105 106 107 108 109 110 111 197 198 199 200 201 202 203\n", | |
" 105 106 107 108 109 110 111 112 198 199 200 201 202 203 204\n", | |
" 106 107 108 109 110 111 112 113 199 200 201 202 203 204 205\n", | |
" 107 108 109 110 111 112 113 114 … 200 201 202 203 204 205 206\n", | |
" 108 109 110 111 112 113 114 115 201 202 203 204 205 206 207\n", | |
" 109 110 111 112 113 114 115 116 202 203 204 205 206 207 208\n", | |
" 110 111 112 113 114 115 116 117 203 204 205 206 207 208 209\n", | |
" 111 112 113 114 115 116 117 118 204 205 206 207 208 209 210\n", | |
" 112 113 114 115 116 117 118 119 … 205 206 207 208 209 210 211\n", | |
" 113 114 115 116 117 118 119 120 206 207 208 209 210 211 212\n", | |
" 114 115 116 117 118 119 120 121 207 208 209 210 211 212 213\n", | |
" ⋮ ⋮ ⋱ ⋮ \n", | |
" 190 191 192 193 194 195 196 197 283 284 285 286 287 288 289\n", | |
" 191 192 193 194 195 196 197 198 284 285 286 287 288 289 290\n", | |
" 192 193 194 195 196 197 198 199 … 285 286 287 288 289 290 291\n", | |
" 193 194 195 196 197 198 199 200 286 287 288 289 290 291 292\n", | |
" 194 195 196 197 198 199 200 201 287 288 289 290 291 292 293\n", | |
" 195 196 197 198 199 200 201 202 288 289 290 291 292 293 294\n", | |
" 196 197 198 199 200 201 202 203 289 290 291 292 293 294 295\n", | |
" 197 198 199 200 201 202 203 204 … 290 291 292 293 294 295 296\n", | |
" 198 199 200 201 202 203 204 205 291 292 293 294 295 296 297\n", | |
" 199 200 201 202 203 204 205 206 292 293 294 295 296 297 298\n", | |
" 200 201 202 203 204 205 206 207 293 294 295 296 297 298 299\n", | |
" 201 202 203 204 205 206 207 208 294 295 296 297 298 299 300" | |
] | |
}, | |
"execution_count": 12, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"# 2重の内包表記も可能\n", | |
"fruits_num = [i + j for i in 1:100, j in 101:200]" | |
] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Julia 0.6.0", | |
"language": "julia", | |
"name": "julia-0.6" | |
}, | |
"language_info": { | |
"file_extension": ".jl", | |
"mimetype": "application/julia", | |
"name": "julia", | |
"version": "0.6.0" | |
}, | |
"latex_envs": { | |
"LaTeX_envs_menu_present": true, | |
"autocomplete": true, | |
"bibliofile": "biblio.bib", | |
"cite_by": "apalike", | |
"current_citInitial": 1, | |
"eqLabelWithNumbers": true, | |
"eqNumInitial": 1, | |
"hotkeys": { | |
"equation": "Ctrl-E", | |
"itemize": "Ctrl-I" | |
}, | |
"labels_anchors": false, | |
"latex_user_defs": false, | |
"report_style_numbering": false, | |
"user_envs_cfg": false | |
}, | |
"toc": { | |
"colors": { | |
"hover_highlight": "#DAA520", | |
"navigate_num": "#000000", | |
"navigate_text": "#333333", | |
"running_highlight": "#FF0000", | |
"selected_highlight": "#FFD700", | |
"sidebar_border": "#EEEEEE", | |
"wrapper_background": "#FFFFFF" | |
}, | |
"moveMenuLeft": true, | |
"nav_menu": { | |
"height": "56px", | |
"width": "254px" | |
}, | |
"navigate_menu": true, | |
"number_sections": true, | |
"sideBar": true, | |
"threshold": 4, | |
"toc_cell": true, | |
"toc_section_display": "block", | |
"toc_window_display": true, | |
"widenNotebook": false | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment