にゃんきち(੭ˊ꒳​ˋ)੭✧

はっひゃー!借金返済がんばるば~ଘ(੭ˊ꒳​ˋ)੭✧

python 配列にint型を指定する

画像引用:https://eng-entrance.com/java-array-basic

コンパイル言語(CとかJava)は、配列に型を定義するのがだ、Pythonは配列に型を定義しなくても問題なく実行できてしまう。

intとstrを混在する配列を書けてしまう

例えば以下のコードは問題なく定義できてしまう。うほっ。マジっすか。

    obj_array = [1, 2, 3, 4, 5, 'a']
    print("元の配列:", obj_array)

int型であることを明確に定義

もし配列の各要素がint型であることを明確に定義したい場合は、以下のようにarray.array()の第一引数にintの意味のiのtypecodeを指定する。うほっ。iというタイプをミスりそう。

    int_array = array.array('i', [1, 2, 3, 4, 5])
    print("元の配列:", int_array)

sum()関数を安全に使用

int型を定義することで、len()やsum()関数を安全に使用することができる

    # 配列の長さを取得
    print("配列の長さ:", len(int_array))

    # 配列内の要素の合計を計算
    print("要素の合計:", sum(int_array))

コーディング中に気付けるの?

とはいっても、コンパイル言語のように事前にコンパイルするわけではないので、コーディング中に問題に気付けるわけではない。

pythonに詳しいわけではないので、もしかしたら気付ける方法があるのかもしれないが、現時点ではわかっていない。

以下の場合は、実行時にarray.array()のところでエラーが発生する。エラーの内容はTypeError: 'str' object cannot be interpreted as an integer

    int_array = array.array('i', [1, 2, 3, 4, 5, 'a'])
    print("元の配列:", int_array)

以下の場合は、実行時にsum()のところでエラーが発生する。エラー内容はTypeError: unsupported operand type(s) for +: 'int' and 'str'

    obj_array = [1, 2, 3, 4, 5, 'a']
    print("元の配列:", obj_array)

    # 配列内の要素の合計を計算
    print("要素の合計:", sum(obj_array))

所感

個人的には型をきちんと指定できる言語のほうが好きだが、冗長なコードになることは確かで一長一短。

この機能も必要を感じる人と、感じない人がいて、どちらの意見もわかる気はする。

ちなみにこの機能はpython3.12からになるのでご注意を。