Open12

Python豆知識

PythonアカデミアPythonアカデミア

Pythonのsortedは安定(Stable)

In
data = [('red', 1), ('blue', 1), ('red', 2), ('blue', 2)]

print(sorted(data, key=lambda d: d[0]))
Out
[('blue', 1), ('blue', 2), ('red', 1), ('red', 2)]
PythonアカデミアPythonアカデミア

Pythonにおいてミュータブルオブジェクトは同じ値を持ったとき、違うオブジェクトを参照することが保証されていますが、イミュータブルオブジェクトは同じオブジェクトを参照するときもあるし、そうでないときもあります。

つまり、

a = 1
b = 1

としたとき、

abは値1を持つ同じオブジェクトを参照する時としないときがあります。

しかし、

c = []
d = []

とすると、cdは異なったリストを参照することが保証されています。

PythonアカデミアPythonアカデミア

raw文字列は末尾が奇数個のバックスラッシュで終わるとエラーになるので注意。

In
path = r"C:\windows\name\desktop\"
Out
SyntaxError: unterminated string literal (detected at line 1)
PythonアカデミアPythonアカデミア

公式ドキュメントで、

class range(start, stop[, step])

みたいに角かっこがついている場合がありますが、これはこの引数がオプションであることを表しているだけなので、角かっこを入力する必要はありません。

PythonアカデミアPythonアカデミア

f-stringで

print(f'{ans=}')

と書くと

ans=○○

と変数名ごと出力されます。デバッグに便利。

In
year = 2023
place = 'Tokyo'
print(f'{year=}, {place=}')
Out
year=2023, place='Tokyo'
PythonアカデミアPythonアカデミア

enumerate(A, x)でカウントをxから始められます。

In
color_lists = ["red", "yellow", "blue"]

for i, color in enumerate(color_lists, 5):
    print(i, color)
Out
5 red
6 yellow
7 blue
PythonアカデミアPythonアカデミア

[:]でコピー、[::-1]で逆順のコピーを生成できます。

In
l1 = [1, 2, 3, 4]
l2 = l1[:]
l3 = l1[::-1]
print(l1)
print(l2)
print(l3)
Out
[1, 2, 3, 4]
[1, 2, 3, 4]
[4, 3, 2, 1]
PythonアカデミアPythonアカデミア

rfは両方つけることができる。

print("Hello\nWorld")
# Hello
# World

print(r"Hello\nWorld")
# Hello\nWorld

exclamation_mark = "!"

print(f"Hello\nWorld{exclamation_mark}")
# Hello
# World!

print(rf"Hello\nWorld{exclamation_mark}")
# Hello\nWorld!

print(fr"Hello\nWorld{exclamation_mark}")
# Hello\nWorld!