array --- آرایه‌های کارآمد از مقادیر عددی


This module defines an object type which can compactly represent an array of basic values: characters, integers, floating-point numbers, complex numbers. Arrays are mutable sequence types and behave very much like lists, except that the type of objects stored in them is constrained. The type is specified at object creation time by using a type code. The following type codes are defined:

کد نوع

نوع C

نوع پایتون

حداقل اندازه به بایت

یادداشت‌ها

'b'

signed char

int

1

'B'

unsigned char

int

1

'w'

Py_UCS4

نویسه‌ی یونیکد

4

(1)

'h'

signed short

int

2

'H'

short بدون علامت (unsigned short)

int

2

'i'

signed int

int

2

'I'

عدد صحیح بدون علامت (unsigned int)

int

2

'l'

signed long

int

4

'L'

unsigned long

int

4

'q'

long long علامت‌دار (signed long long)

int

۸

'Q'

unsigned long long

int

۸

'e'

_Float16

float

2

(2)

'f'

float

float

4

'd'

double

float

۸

'Zf'

float complex

complex

۸

(3)

'Zd'

double complex

complex

16

(3)

یادداشت‌ها:

  1. اضافه شده در نسخه‌ی 3.13.

  2. The IEEE 754 binary16 "half precision" type was introduced in the 2008 revision of the IEEE 754 standard. This type is not widely supported by C compilers. It's available as _Float16 type, if the compiler supports the Annex H of the C23 standard.

    اضافه شده در نسخه‌ی 3.15.

  3. Complex types (Zf and Zd) are available unconditionally, regardless on support for complex types (the Annex G of the C11 standard) by the C compiler. As specified in the C11 standard, each complex type is represented by a two-element C array containing, respectively, the real and imaginary parts.

    اضافه شده در نسخه‌ی 3.15.

همچنین ملاحظه نمائید

The ctypes and struct modules, as well as third-party modules like numpy, use similar -- but slightly different -- type codes.

نمایش واقعی مقادیر توسط معماری ماشین تعیین می‌شود (به‌طور دقیق‌تر، توسط پیاده‌سازی C). اندازه واقعی از طریق ویژگی array.itemsize قابل دسترسی است.

این ماژول آیتم زیر را تعریف می‌کند:

array.typecodes

A tuple with all available type codes.

تغییر یافته در نسخه‌ی 3.15: The type changed from str to tuple.

این ماژول نوع زیر را تعریف می‌کند:

class array.array(typecode[, initializer])

آرایه‌ای جدید با آیتم‌های محدودشده با typecode که از مقدار اختیاری initializer مقداردهی اولیه می‌شود؛ این مقدار باید یک شیء bytes یا bytearray، یک رشته یونیکد، یا پیمایش‌پذیری روی عناصری از نوع مناسب باشد.

اگر یک شیء bytes یا bytearray داده شود، مقدارده اولیه به متد frombytes() آرایه‌ی جدید ارسال می‌شود؛ اگر یک رشته یونیکد داده شود، مقدارده اولیه به متد fromunicode() ارسال می‌شود؛ در غیر این صورت، پیمایش‌گر مقدارده اولیه به متد extend() ارسال می‌شود تا آیتم‌های اولیه به آرایه افزوده شوند.

اشیای آرایه از عملیات معمول دنباله های تغییرپذیر شامل اندیس‌دهی، اسلایس، الحاق و ضرب پشتیبانی می‌کنند. هنگام استفاده از انتساب اسلایس، مقدار اختصاص‌یافته باید یک شیء آرایه با همان کد نوع باشد؛ در تمام موارد دیگر، TypeError پرتاب می‌شود. اشیای آرایه همچنین رابط بافر را پیاده‌سازی می‌کنند و می‌توانند هر جا که اشیاء شبه‌بایت پشتیبانی می‌شوند، استفاده شوند.

آرایه‌ها نسبت به نوع محتوای خود عام هستند.

یک رویداد حسابرسی array.__new__ را با آرگومان‌های typecode و initializer پرتاب می‌کند.

typecode

نویسه‌ی کد نوع (typecode) که برای ایجاد آرایه به کار رفته است.

itemsize

طول یک آیتم آرایه در نمایش داخلی، بر حسب بایت.

append(value, /)

یک آیتم جدید با مقدار مشخص‌شده را به انتهای آرایه اضافه می‌کند.

buffer_info()

یک تاپل (address, length) برمی‌گرداند که نشانی حافظه فعلی و طول بر حسب عناصر بافری را که برای نگهداری محتوای آرایه استفاده می‌شود، مشخص می‌کند. اندازه‌ی بافر حافظه بر حسب بایت را می‌توان به‌صورت array.buffer_info()[1] * array.itemsize محاسبه کرد. این موضوع گاهی هنگام کار با رابط‌های سطح پایین I/O (و ذاتاً ناامن) که به نشانی‌های حافظه نیاز دارند، مفید است، مانند برخی از عملیات‌های ioctl(). اعداد برگردانده‌شده تا زمانی که آرایه وجود دارد و هیچ عملیات تغییر طولی بر آن اعمال نشود، معتبر هستند.

توجه

هنگام استفاده از اشیای آرایه از کدی که به زبان C یا C++ نوشته‌شده است (تنها راه برای استفاده مؤثر از این اطلاعات)، منطقی‌تر است از رابط بافر (buffer interface) که توسط اشیای آرایه پشتیبانی می‌شود استفاده کنید. این متد برای سازگاری با عقب‌گرد نگهداری می‌شود و باید در کد جدید از آن اجتناب شود. رابط بافر در پروتکل بافر مستند شده است.

byteswap()

"Byteswap" all items of the array. This is only supported for values which are 1, 2, 4, 8 or 16 bytes in size; for other types of values, RuntimeError is raised. It is useful when reading data from a file written on a machine with a different byte order. Note, that for complex types the order of components (the real part, followed by imaginary part) is preserved.

count(value, /)

تعداد تکرارهای value را در آرایه برمی‌گرداند.

extend(iterable, /)

آیتم‌هایی از iterable را به انتهای آرایه اضافه می‌کند. اگر iterable آرایه دیگری باشد، باید کد نوع دقیقاً یکسانی داشته باشد؛ در غیر این صورت، TypeError پرتاب می‌شود. اگر iterable یک آرایه نباشد، باید پیمایش‌پذیر باشد و عناصر آن باید نوع مناسب برای اضافه شدن به آرایه را داشته باشند.

frombytes(buffer, /)

آیتم‌ها را از شیء شبه‌بایت می‌افزاید و محتوای آن را به‌عنوان آرایه‌ای از مقادیر ماشینی تفسیر می‌کند (انگار که با استفاده از متد fromfile() از پرونده‌ای خوانده شده باشد).

اضافه شده در نسخه‌ی 3.2: fromstring() برای وضوح بیشتر به frombytes() تغییر نام پیدا کرده است.

fromfile(f, n, /)

n آیتم را (به‌صورت مقادیر ماشینی) از file object f بخوانید و آن‌ها را به انتهای آرایه اضافه کنید. اگر کمتر از n آیتم در دسترس باشد، EOFError پرتاب می‌شود، اما آیتم‌هایی که در دسترس بودند همچنان در آرایه درج می‌شوند.

fromlist(list, /)

آیتم‌های فهرست را اضافه می‌کند. این معادل for x in list: a.append(x) است، با این تفاوت که اگر خطای نوع رخ دهد، آرایه بدون تغییر باقی می‌ماند.

fromunicode(ustr, /)

Extends this array with data from the given Unicode string. The array must have type code 'w'; otherwise a ValueError is raised. Use array.frombytes(unicodestring.encode(enc)) to append Unicode data to an array of some other type.

index(value[, start[, stop]])

کوچک‌ترین i را برمی‌گرداند، به‌طوری که i اندیس نخستین رخداد value در آرایه باشد. می‌توان آرگومان‌های اختیاری start و stop را برای جست‌وجوی value در زیربخشی از آرایه مشخص کرد. اگر value یافت نشد، ValueError را پرتاب می‌کند.

تغییر یافته در نسخه‌ی 3.10: پارامترهای اختیاری start و stop افزوده شدند.

insert(index, value, /)

یک آیتم جدید با مقدار value را پیش از موقعیت index در آرایه درج کنید. مقادیر منفی نسبت به انتهای آرایه در نظر گرفته می‌شوند.

pop(index=-1, /)

آیتم با اندیس i را از آرایه حذف می‌کند و آن را برمی‌گرداند. آرگومان اختیاری به‌طور پیش‌فرض -1 است، بنابراین به‌طور پیش‌فرض آخرین آیتم حذف و برگردانده می‌شود.

remove(value, /)

اولین رخداد value را از آرایه حذف می‌کند.

clear()

حذف تمام عناصر از آرایه.

اضافه شده در نسخه‌ی 3.13.

reverse()

ترتیب آیتم‌های آرایه را معکوس می‌کند.

tobytes()

آرایه را به آرایه‌ای از مقادیر ماشین تبدیل می‌کند و بازنمایی بایتی را برمی‌گرداند (همان دنباله‌ای از بایت‌ها که توسط متد tofile() در یک پرونده نوشته می‌شود.)

اضافه شده در نسخه‌ی 3.2: tostring() برای وضوح به tobytes() تغییر نام داده شده است.

tofile(f, /)

تمام آیتم‌ها (به‌صورت مقادیر ماشینی) را در شیء پرونده f می‌نویسد.

tolist()

آرایه را به یک فهرست معمولی با همان آیتم‌ها تبدیل می‌کند.

tounicode()

Convert the array to a Unicode string. The array must have a type 'w'; otherwise a ValueError is raised. Use array.tobytes().decode(enc) to obtain a Unicode string from an array of some other type.

The string representation of array objects has the form array(typecode, initializer). The initializer is omitted if the array is empty, otherwise it is a Unicode string if the typecode is 'w', otherwise it is a list of numbers. The string representation is guaranteed to be able to be converted back to an array with the same type and value using eval(), so long as the array class has been imported using from array import array. Variables inf and nan must also be defined if it contains corresponding floating-point values. Examples:

array('l')
array('w', 'hello \u2641')
array('l', [1, 2, 3, 4, 5])
array('d', [1.0, 2.0, 3.14, -inf, nan])

همچنین ملاحظه نمائید

ماژول struct

بسته‌بندی و واگشایی داده‌های دودویی ناهمگن.

NumPy

بسته NumPy نوع آرایه دیگری را تعریف می‌کند.