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 |
۸ |
|
|
عدد اعشاری مختلط |
مختلط |
۸ |
(3) |
|
ممیز شناور با دقت مضاعف مختلط |
مختلط |
۱۶ |
(3) |
یادداشتها:
اضافه شده در نسخهی 3.13.
نوع «نیمدقت» دودویی IEEE 754 با نام binary16 در بازبینی سال ۲۰۰۸ از :ieee 754 standard <استاندارد IEEE 754>_ معرفی شد. این نوع داده بهطور گسترده توسط کامپایلرهای C پشتیبانی نمیشود. اگر کامپایلر از ضمیمهی H استاندارد C23 پشتیبانی کند، این نوع داده به عنوان نوع _Float16 در دسترس است.
اضافه شده در نسخهی 3.15.
انواع مختلط (
ZfوZd) بدون قید و شرط و صرفنظر از پشتیبانی کامپایلر C از انواع مختلط (ضمیمهی G استاندارد C11) در دسترس هستند. همانطور که در استاندارد C11 مشخص شده است، هر نوع دادهی مختلط توسط یک آرایهی C دو عضوی نمایش داده میشود که به ترتیب شامل بخشهای حقیقی و موهمی است.اضافه شده در نسخهی 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¶
یک تاپل با تمام کدهای نوع موجود.
این ماژول نوع زیر را تعریف میکند:
- 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» کنید. این کار فقط برای مقادیری پشتیبانی میشود که اندازهی آنها ۱، ۲، ۴، ۸ یا ۱۶ بایت باشد؛ برای سایر انواع مقادیر، استثنای
RuntimeErrorبالا میرود. این کار هنگام خواندن داده از پروندهای که روی ماشینی با ترتیب بایت متفاوت نوشته شده است، مفید است. توجه داشته باشید که برای انواع مختلط، ترتیب اجزا (بخش حقیقی، و به دنبال آن بخش موهومی) حفظ میشود.
- 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])