デカ文字Python

デカ文字&短文でPythonを簡潔にまとめたブログ

初めてのPython-ビルトインオブジェクト

 

ようやくプログラムっぽい章です

 

メソッドと式・関数

Pythonのプログラムには複数の型に適用できるものと、特定の型に適用できるもの、という2つの操作がある。前者をビルドイン関数(len())やX[0]と呼び、後者をメソッドと呼ぶ。
 この使い分けはわかりやすかった。 バイト型について予習したあとに文字列やったらすんなり理解できた。

文字列

エスケープシーケンス

文字列のなかにバックスラッシュ\を使用することで、その後にバイトコードを入れることができる。これを用いれば、tabや改行といった特殊文字も、文字列で表すことができる。
表示文字とも言える文字列"string"内に/~と書くことで、表示文字に自動変換されるバイトコードを直接書き込めるっていうやべー技。
text = "a\tb\u0033c"
print(text)
>>>a b3c
print(len(text))
>>>5
  \は後続する文字とエスケープシーケンスを作ることがなければ、ただの文字\になる。
text = "C:\py\code."
print(text)
>>>C:\py\code.
print(repr(text))
>>>C:\\py\\code.

リスト

リストが保存するのはオブジェクト自身ではなく、オブジェクトのリファレンスである。
a = 3
l =[1, 2, a]
a = "a"
print(l)
>>>[1, 2, 3]

 

途中でa = "a"が代入されようとも、l[2]が保存しているものはあくまでも3のリファレンスであるため、l = [1,2,3]のままである。

 

a = 3
l =[1, 2, a]
m = l
m[2] = "a"
print(l)
>>>[1, 2, 'a']

 

m = lにより、[1, 2, 3]はmとlの共有リファレンスになった。

m[2] = "a"によって、その共有リファレンスの内容が一部変更されたため、lから呼び出された共有リファレンスも変更後の内容で表示される。

 辞書

要素が一定に並んでいることを前提にした操作はできない。
d1 = {1: "a"}
d2 = {2: "b"}

d = d1 + d2
>>>TypeError: unsupported operand type(s) for +: 'dict' and 'dict'

 

連結以外にもオフセットにも対応していない。

 

 

辞書には、辞書中のすべてのキーをリストの形で戻すkeys()というメソッドも用意されています。辞書内のオブジェクトが順不同なため、このkeys()の戻り値のリストも順不同となっています。

D ={"a": 1, "b": 2}
a = D.keys()
print(a)
>>>["b", "a"]

なるほど。実際にやってみる。

D ={"a": 1, "b": 2}
a = D.keys()
print(a)
>>>dict_keys(['a', 'b'])

 

え、なにこのオブジェクトは……

 

 どうもPython3系からは、辞書の.keys(),.values(),.items()メソッドはリストではなく、setに近いオブジェクトを返すようになったらしい。

 

www.python.org

 

データ容量の省略可のためなのな。

 

これらで出力されるオブジェクトは、forで回すことができるように__iter__メソッドを持っているため、従来通りの方法で辞書の要素のひとつひとつにアクセスすることは可能である。

D ={"a": 1, "b": 2}
for i in D.keys():
print(D[i], end=", ")
>>>1, 2,

 

今回はここまで。