|
31 | 31 | </script> |
32 | 32 |
|
33 | 33 | <template> |
34 | | - <Title>第3講 Python: 配列・辞書</Title> |
| 34 | + <Title>第3講 Python: 配列、辞書</Title> |
35 | 35 |
|
36 | 36 | <div class="container w-3/6 mx-auto mb-10 text-start"> |
37 | 37 | <Header>1.配列</Header> |
|
51 | 51 |
|
52 | 52 | 上の例では、1行目でstr型のデータを格納したlistを定義している。 |
53 | 53 | listに格納されたデータは、food[0]のように、listの変数名の後ろにインデックス(<span class="text-yellow-400">index</span>)を指定することでアクセスできる。 |
54 | | - ここで、indexが0オリジン(<span class="text-yellow-400">zero-based</span>)であることには十分注意してほしい。 |
| 54 | + ここで、indexが0オリジン(<span class="text-yellow-400">zero-based</span>)であることに十分注意してほしい。 |
55 | 55 | </Paragraph> |
56 | 56 |
|
57 | 57 | <Paragraph> |
|
69 | 69 | </Paragraph> |
70 | 70 |
|
71 | 71 | <Paragraph> |
72 | | - 補足: Pythonにおけるlistは、一般的なCやJavaの配列とは異なり、動的配列(<span class="text-yellow-400">dynamic array</span>)である。これは、list内のデータが増減するたびに、自動的にメモリ領域が再割り当てされるということである。従って、事前に定まったメモリ領域を確保し、管理するという手間は生じない。<br> |
| 72 | + 補足: Pythonにおけるlistは、一般的なCやJavaの配列とは異なり、動的配列(<span class="text-yellow-400">dynamic array</span>)である。これは、list内のデータが増減するたびに、自動的にメモリ領域が再割り当てされるということである。したがって、事前に定まったメモリ領域を確保し、管理するという手間は生じない。<br> |
73 | 73 | これは、C++におけるstd::vectorやJavaにおけるjava.util.ArrayListなどのライブラリが実装するものと同様の機能である。 |
74 | 74 | </Paragraph> |
75 | 75 |
|
|
91 | 91 | </Paragraph> |
92 | 92 |
|
93 | 93 | <Paragraph> |
94 | | - 従って、配列の全ての要素を書き換えるためには次のようにすること。 |
| 94 | + したがって、配列の全ての要素を書き換えるためには次のようにすること。 |
95 | 95 |
|
96 | 96 | <PyScript> |
97 | 97 | food = ['Apple', 'Banana', 'Cherry', 'Durian', 'Eggplant'] |
|
248 | 248 |
|
249 | 249 | <Header>2.辞書</Header> |
250 | 250 | <Paragraph> |
251 | | - 配列について理解できれば、辞書(<span class="text-yellow-400">dictionary</span>)を理解するのはそれほど難しいことではない。なぜなら、辞書は配列のindexの代わりに任意のキー(<span class="text-yellow-400">key</span>)を用いるに過ぎないからである。 |
| 251 | + 配列について理解できれば、辞書(<span class="text-yellow-400">dictionary</span>)を理解するのはそれほど難しいことではない。なぜなら辞書は、配列のindexにスカラー値以外のデータ型も用いられるに過ぎないからである。また、辞書のindexをキー(<span class="text-yellow-400">key</span>)と呼ぶ。 |
252 | 252 |
|
253 | 253 | <SubHeader>辞書の基本</SubHeader> |
254 | 254 | <Paragraph> |
|
321 | 321 | </PyScript> |
322 | 322 | </Paragraph> |
323 | 323 |
|
| 324 | + <Paragraph> |
| 325 | + 次に、要素を削除する方法を示す。 |
| 326 | + |
| 327 | + <PyScript> |
| 328 | + desktop = {"os": "Windows 11", "cpu": "Xeon", "gpu": "RTX 4090"} |
| 329 | + |
| 330 | + desktop.pop("cpu") |
| 331 | + print(desktop) |
| 332 | + </PyScript> |
| 333 | + |
| 334 | + <PyScript> |
| 335 | + desktop = {"os": "Windows 11", "cpu": "Xeon", "gpu": "RTX 4090"} |
| 336 | + |
| 337 | + del desktop["cpu"] |
| 338 | + print(desktop) |
| 339 | + </PyScript> |
| 340 | + |
| 341 | + <PyScript> |
| 342 | + desktop = {"os": "Windows 11", "cpu": "Xeon", "gpu": "RTX 4090"} |
| 343 | + |
| 344 | + desktop = {k: v for k, v in desktop.items() if k != "cpu"} |
| 345 | + print(desktop) |
| 346 | + </PyScript> |
| 347 | + |
| 348 | + このように、配列とほぼ同様にして値を操作することができる。 |
| 349 | + </Paragraph> |
| 350 | + |
324 | 351 | <SubHeader>配列と辞書</SubHeader> |
325 | 352 | <Paragraph> |
326 | | - 配列と辞書は、互いに入れ子になることが可能である。 |
| 353 | + 配列と辞書は、互いに入れ子にすることが可能である。 |
327 | 354 | 具体例を見てみるとしよう。 |
328 | 355 |
|
329 | 356 | <PyScript> |
|
349 | 376 |
|
350 | 377 | <Header>3.練習問題</header> |
351 | 378 | <Paragraph> |
352 | | - 近日公開! 乞うご期待 |
| 379 | + 作問者からのお願い: numpyを使わないで下さい。全問、一瞬で易化します。最後の問題のみ、あらかじめmathライブラリをインポートしておきました。 |
| 380 | + </Paragraph> |
| 381 | + <Paragraph> |
| 382 | + <SubHeader class="mb-3">[<span class="text-green-600 font-bold">Easy</span>] 次のデータを正規化せよ。</SubHeader> |
| 383 | + <Hint level="easy">グレイスケール(8bit)ですね。</Hint> |
| 384 | + |
| 385 | + <PyScript> |
| 386 | + data = [ |
| 387 | + [133, 254, 0, 233, 45], |
| 388 | + [230, 43, 198, 172, 85], |
| 389 | + [ 75, 189, 34, 210, 222], |
| 390 | + [ 43, 240, 65, 184, 202], |
| 391 | + [139, 14, 78, 255, 164] |
| 392 | + ] |
| 393 | + # 続きを書いてね |
| 394 | + |
| 395 | + print(normalized_data) |
| 396 | + </PyScript> |
| 397 | + </Paragraph> |
| 398 | + |
| 399 | + <Paragraph> |
| 400 | + <SubHeader class="mb-3">[<span class="text-yellow-400 font-bold">Medium</span>] 次のデータを昇順(ascending order)に並べ替えよ。ただし、バブルソートを使うこと。</SubHeader> |
| 401 | + <Hint level="med1">各データが泡のように浮かび上がってきます。</Hint> |
| 402 | + |
| 403 | + <PyScript> |
| 404 | + data = [5, 9, 3, 6, 2, 1, 3, 7, 8, 0] |
| 405 | + # 続きを書いてね |
| 406 | + |
| 407 | + print(sorted_data) |
| 408 | + </PyScript> |
| 409 | + </Paragraph> |
| 410 | + |
| 411 | + <Paragraph> |
| 412 | + <SubHeader class="mb-3">[<span class="text-yellow-400 font-bold">Medium</span>] 行列Aと行列Bの積を求めよ。</SubHeader> |
| 413 | + <Hint level="med2">定義通りに計算しよう。(※手計算しないでね)</Hint> |
| 414 | + |
| 415 | + <PyScript> |
| 416 | + A = [ |
| 417 | + [1, 2, 3], |
| 418 | + [4, 5, 6], |
| 419 | + [7, 8, 9] |
| 420 | + ] |
| 421 | + B = [ |
| 422 | + [-1, 0, 1], |
| 423 | + [ 0, 1, -1], |
| 424 | + [ 1, -1, -1] |
| 425 | + ] |
| 426 | + # 続きを書いてね |
| 427 | + |
| 428 | + print(C) |
| 429 | + </PyScript> |
| 430 | + </Paragraph> |
| 431 | + |
| 432 | + <Paragraph> |
| 433 | + <SubHeader class="mb-3">[<span class="text-yellow-400 font-bold">Medium</span>] データAとデータBの相関係数を求めよ。</SubHeader> |
| 434 | + <Hint level="med3">平方根は、<span class="text-yellow-400">math.sqrt()</span>関数で計算できる。</Hint> |
| 435 | + |
| 436 | + <PyScript> |
| 437 | + import math |
| 438 | + |
| 439 | + data_A = [ 0, 3, 5, 9, -2, 1, 2, -4, 7, 8] |
| 440 | + data_B = [ 3, 12, 6, 5, 4, -2, 3, -1, 9, 7] |
| 441 | + # 続きを書いてね |
| 442 | + |
| 443 | + print(cor_AB) |
| 444 | + </PyScript> |
353 | 445 | </Paragraph> |
354 | 446 |
|
355 | 447 | <ProgressFooter :progress="completion" class="mt-16" /> |
|
0 commit comments