Python リスト型データ List Nest

Python学習12日目のマスターU(@Udemy11)です。

酒井さんの講座を受講しているとたまに、

いつコードをコピーしてた?

と思うくらい、入力が速いときがあります。
一つ前のコードをコピーしている感じはないのに、あっという間にペーストしているような感じです。

多分、ショートカットで入力してるんだと思うのですが、コードを打ち込むスピードが半端ありません。

私の場合、まだそこまでのスピードは必要ないので、コードをきちんと理解できるよう、繰り返して入力するようにしていますが、本格的にコードを書き始めたら、ショートカットもおぼえてスピードアップをはかりたいと思っています。

今日は、リストのネストを学習しました。

昨日の復習

今日は、対話型シェルの表示にしてみました。

>>> l = [1, 2, 3, 4, 5, 6, 7, 8]
>>> l[0]
1
>>> l[-1]
8
>>> l[3:6]
[4, 5, 6]
>>> l[3:]
[4, 5, 6, 7, 8]
>>> l[:3]
[1, 2, 3]
>>> l[:]
[1, 2, 3, 4, 5, 6, 7, 8]

リストの値を抽出するスライスもいろいろなやり方がありましたね。

>>> l[::2]
[1, 3, 5, 7]
>>> l[::-1]
[8, 7, 6, 5, 4, 3, 2, 1]
>>> len(l)
8
>>> type(l)
<class 'list'>

リストを一つ飛ばしで出力したり、最後のindexから出力したり、len()で長さを求めたり、type()でlistであることを確認しました。

リストの入れ子【Nest】

Python リスト型データ List Nest

リストの中にリストを入れて入れ子にすることをネストというらしいです。

3つの変数にリストを代入して、出力してみました。

a = [1, 2, 3, 4]
b = [5, 6, 7, 8]
c = list('abcd')
print([a, b])
print([a, c])

出力結果

[[1, 2, 3, 4], [5, 6, 7, 8]]
[[1, 2, 3, 4], ['a', 'b', 'c', 'd']]

変数cは、list関数で文字列をリストにしてみました。

どちらもリストの中に2つのリストが入った状態になります。

ネストされたリストの値を取得

Python リスト型データ List Nest

最初に定義したリストをネストした変数xとyを作って、ネストされたリストの中の値を抽出します。

x = [a, b]
y = [a, c]
print(x)
print(y)
print(x[0][3], x[1][3])
print(y[0][0], y[1][0])
print(a + b)

出力結果

[[1, 2, 3, 4], [5, 6, 7, 8]]
[[1, 2, 3, 4], ['a', 'b', 'c', 'd']]
4 8
1 'a'
[1, 2, 3, 4, 5, 6, 7, 8]

わかりやすいようにxとyを先に出力して、あとの抽出結果でどの値が抽出されているのか確認しました。
変数xのindexが0のリストaのindexが3の値と変数xのindexが1のリストbのindexが3の値などがきちんと抽出されています。
最後は【+】を使って、aとbをつなげていますが、この場合、ネストされずに一つのリストになります。

GUIより楽しい

Python リスト型データ List Nest

MacOS Catalinaにすると、Macのターミナルがbashから、zshに変更されてPATHの設定を変更しないとAnacondaでインストールしたPython3.7.6が起動しないという問題が発生して、解決にかなり時間を取られてしまいました。

マトリックスを観たあたりから、マウスを使った操作ではなく、キーボードを使ってコマンドを入れてMacを操作するのが憧れだったので、うまく動くと嬉しくなるんですよね。

上記のGigazineで、マトリックスに出てくるコードが落ちていく画面を再現しているページが紹介されていました。

matlix

こんなコードがサラッと作れちゃう人に憧れてしまいます。

一般のアプリケーションではなく対話型シェルだと具体的にどんなことが起こっているのか、目に見えていないところで処理がされているので、なにか変なことを実行してしまっていないか不安になってしまいます。

例えば、コマンドラインでファイルの消去をするときは、確認もなくあっという間に消去されてしまうので、間違って重要なファイルを消してしまわないかと思ってヒヤヒヤすることもあります。

Python学習365日チャレンジ!を成し遂げて、マトリックスの世界に近づきたいという妄想を原動力にしっかりと学習していきたいと思います。

それでは、Good Python!