見出し画像

書籍「Pythonチュートリアル 第3版 11.7 リスト操作のツール」の array --- 効率のよい数値アレイ ---

おっ!、、、Python は、サードパーティに頼らなくても、自前で基本的な値 (文字、整数、浮動小数点数) のアレイ (array、配列) をコンパクトに表現できるオブジェクト型を用意してるんだね。

Pythonチュートリアル 第3版 を持ってない人は、まず⬇️を見てくださいね。


で、、、少しテストをしてみる事にしました。。。


① C の型で言う unsigned short の配列を定義して、ただ表示してみる。その後で、数値アレイの要素 1 つの内部表現に使われるバイト長も表示してみる。


import array as ar

a = ar.array('H', [1, 3, 5, 7])  # unsigned short 配列
print(a)
print('内部表現に使われるバイト長', a.itemsize)  # バイト長は実行環境依存

  
'''
実行結果

array('H', [1, 3, 5, 7])
内部表現に使われるバイト長 2
'''



② 更に a[0] = 10 を追加して、リストとして表示してみる。


import array as ar

a = ar.array('H', [1, 3, 5, 7])  # unsigned short 配列
print(a)
print('内部表現に使われるバイト長', a.itemsize)  # バイト長は実行環境依存

a[0] = 10
print(list(a))


'''
実行結果

array('H', [1, 3, 5, 7])
内部表現に使われるバイト長 2
[10, 3, 5, 7]
'''


③ a[0] = 10 を a[0] = -10 に変更してエラーが出るか検証。

import array as ar

a = ar.array('H', [1, 3, 5, 7])  # unsigned short 配列
print(a)
print('内部表現に使われるバイト長', a.itemsize)  # バイト長は実行環境依存

a[0] = -10  # -10 は unsigned short ではない ('h' signed short)!!
print(list(a))


'''
実行結果

array('H', [1, 3, 5, 7])
内部表現に使われるバイト長 2
Traceback (most recent call last):
 File "l3.py", line 7, in <module>
   a[0] = -10  # -10 は unsigned short ではない ('h' signed short)!!
OverflowError: unsigned short is less than minimum
'''


このように、違う型の値を代入しようとすると、実際エラーになりました。


これで array --- 効率のよい数値アレイ --- の基本の基本は分かりました。
興味がある人は、他にも色々と試してみてください。



#Python
#Python3
#Pythonチュートリアル
#Pythonチュートリアル第3版
#アレイ
#数値アレイ
#配列
#array
#itemsize
#プログラム
#プログラミング