ハミング距離は、2つの等しい長さの文字列の間で異なる文字の数を表す指標です。Pythonを使ってハミング距離を計算する方法は簡単です。まず、2つの文字列を比較するために、zip()関数を使って文字列をペアにします。次に、異なる文字を数えるために、sum()関数と条件式を使います。例えば、以下のように実装できます。
def hamming_distance(s1, s2):
pairs = zip(s1, s2)
differences = sum(ch1 != ch2 for ch1, ch2 in pairs)
return differences
これで、2つの文字列のハミング距離を計算する関数ができました。この関数は、以下のように使用できます。
>>> hamming_distance('abc', 'xyz')
3
>>> hamming_distance('karolin', 'kathrin')
3
>>> hamming_distance('1011101', '1001001')
2
Pythonでシード値に基づくランダムウォークを生成する
ランダムウォークは、ある点から始まり、ランダムな方向に移動することで生成されるデータセットです。Pythonのrandomモジュールを使って、シード値に基づくランダムウォークを生成することができます。以下は、ランダムウォークを生成する例です。
import random
def random_walk(n):
x, y = 0, 0
for i in range(n):
dx, dy = random.choice([(0,1), (0,-1), (1,0), (-1,0)])
x += dx
y += dy
return (x, y)
この関数は、n回のステップを実行し、ランダムな方向に移動することで、座標のタプルを返します。例えば、以下のように使用できます。
>>> random_walk(10)
(1, 1)
>>> random_walk(100)
(2, 4)
>>> random_walk(1000)
(-26, 18)
PythonでUnicodeの全角スペースを除去する
Pythonでは、Unicode文字列を扱うことができます。Unicode文字列には、半角スペースと全角スペースがありますが、テキスト処理のためには、通常、全角スペースを半角スペースに変換する必要があります。以下は、PythonでUnicodeの全角スペースを除去する方法です。
text = 'こんにちは 世界!'
text = text.replace('\u3000', ' ')
この例では、replace()メソッドを使って、Unicodeの全角スペース(U+3000)を 半角スペースに置換しています。これで、text変数には、「こんにちは 世界!」という文字列が格納されます。
Pythonで独自のマジックコマンドを定義する
IPythonは、Jupyterノートブックなどで使用されるPythonの対話型シェルです。IPythonには、独自のマジックコマンドを定義する機能があります。以下は、独自のマジックコマンドを定義するPythonの例です。
from IPython.core.magic import register_line_magic
@register_line_magic
def mymagic(line):
print("This is my magic command: " + line)
この例では、IPythonのマジックコマンドを定義するために、register_line_magic()デコレータを使って、mymagic()関数を登録しています。mymagic()関数は、渡された引数を使ってメッセージを表示します。以下は、このマジックコマンドを使用する例です。
In [1]: %mymagic Hello, world!
This is my magic command: Hello, world!
これで、独自のマジックコマンドが定義されました。