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 |
نوع پایتون |
حداقل اندازه به بایت |
یادداشتها |
|---|---|---|---|---|
|
signed char |
int |
1 |
|
|
unsigned char |
int |
1 |
|
|
Py_UCS4 |
نویسهی یونیکد |
4 |
(1) |
|
signed short |
int |
2 |
|
|
short بدون علامت (unsigned short) |
int |
2 |
|
|
signed int |
int |
2 |
|
|
عدد صحیح بدون علامت (unsigned int) |
int |
2 |
|
|
signed long |
int |
4 |
|
|
unsigned long |
int |
4 |
|
|
long long علامتدار (signed long long) |
int |
۸ |
|
|
unsigned long long |
int |
۸ |
|
|
_Float16 |
float |
2 |
(2) |
|
float |
float |
4 |
|
|
double |
float |
۸ |
|
|
float complex |
complex |
۸ |
(3) |
|
double complex |
complex |
16 |
(3) |
یادداشتها:
اضافه شده در نسخهی 3.13.
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.
Complex types (
ZfandZd) 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.
این ماژول نوع زیر را تعریف میکند:
- 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,
RuntimeErroris 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 aValueErroris raised. Usearray.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 aValueErroris raised. Usearray.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])