Pythonを勉強してみる

京都大学からPythonの無料教材が提供されているとTwitterで流れてきたので、一から勉強することにしました。
https://repository.kulib.kyoto-u.ac.jp/dspace/bitstream/2433/265459/1/Version2021_10_08_01.pdf

これまで書いてきたのがJavaだったので、Pythonとの違いに色々と驚きました。そのまとめです。

2つの変数の値の入れ替え

Javaでは2つの変数の値を入れ替えるときに、仮置き変数を作って、ローテンションのように書きます。

a = 1
b = 2
tmp = a
a = b
b = tmp

これを、Pythonでは仮置き変数なんてものは作らずに、

a = 1
b = 2
a, b = b, a

って書けちゃうんですよね。これ、aにb(=2)が入った後にbにa(=2)を入れてたらa, bどっちも2になるのでは?と思ったのですが、どうやらa = b, b = aを優先順位なく同時に処理しているらしい...。ふぅん?くらいで次のステップへ。

リスト(list)

Javaの配列とリストを組み合わせた印象。どうやら配列はarrayというものがあるらしいが、普通に使う分にはlistで必要十分そう。

最初テキスト見たとき、配列じゃん!!!!と思いました。

a = [5, 1, 3, 4]
print(a)         //[5, 1, 3, 4]
print(a[0])    //5

が、そう思ったのはここまで。
え!!1つのリストの中に複数の型を入れられるって自由すぎん???
多用するとプログラム読み返すときにちょっと大変なことになりそうな気がしました。

n = [1, 'hello']
print(n)                                     //[1, 'hello']
print(type(a[0]), type(a[1]))   //<class 'int'> <class 'str'>

空のリストや文字列からリストを作る時はlist()で生成できるそうです。

list_a = list()
print(list_a)    //[]

list_b = list(range(5))
print(list_b)    //[0, 1, 2, 3, 4]

list_c = list('abcde')
print(list_c)    //['a', 'b', 'c', 'd', 'e']

ちなみに空の要素を要素数指定して作りたい時は、次のように書くらしい。
appendメソッドで要素追加できるので、空の要素を作っておく機会はあまりなさそうだけど.....。

n = [[]] * 5
print(n)    //[[], [], [], [], []]

要素を必要な分だけ作っておいて、全要素を初期化するなら次のような書き方もできそう。

a = [0]*4
print(a)   //[0, 0, 0, 0]

テキスト読んでて驚いたのですが、なんとPythonさん、添え字に負の数を設定できるそうです。思わず「いいんですかぁぁ〜〜!!?」と叫んだ。Python以外だと、Rubyも負の数の添え字でリストの後ろからアクセスになるらしい。おもしろい。

s = list('abcde')
print(s)        //['a', 'b', 'c', 'd', 'e']
print(s[4])   //e
print(s[-1])  //e
print(s[0])   //a
print(s[-5])  //a

添え字がマイナスの時は、後ろから添え字の絶対値だけ数えた要素を指しているそうです。ちなみに、上記のコードで添え字に指定できるのは、-5〜4なので、print(s[-6])を指定すると、インデックスエラーになります。もしやぐるぐる回っているのか?と思いきや、そんなことは一切起きてなかった。知ってた((((

感想

ひとまずこんな感じでしたー。慣れが必要そう。
PDFは導入から詳しく説明しているものの、例文が結構数学チックでした。他のPython無料教材も読み比べてみたいです。

この記事が気に入ったらサポートをしてみませんか?