وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

راهنمای انواع داده های پایه در پایتون با مثال

0 3
زمان لازم برای مطالعه: 9 دقیقه


مقدمه ای بر انواع داده های پایتون

در این مقاله به بررسی این موضوع خواهیم پرداخت انواع داده های پایه در پایتون. اینها برخی از راه های اساسی را تشکیل می دهند که می توانید داده ها را نشان دهید.

یکی از راه‌های دسته‌بندی این نوع داده‌های پایه در یکی از چهار گروه است:

  • عددی: int، float و کمتر با آن مواجه می شوند complex
  • توالی: str (رشته)، list و tuple
  • بولی: (True یا False)
  • فرهنگ لغت: dict(لغت نامه) نوع داده، متشکل از (key, value) جفت

ذکر این نکته ضروری است که پایتون معمولاً از شما نمی خواهد که نوع داده ای را که استفاده می کنید مشخص کنید و یک نوع داده را بر اساس متغیر شما اختصاص می دهد. روی فکر می کند منظور شما چیست

نکته مهمی که باید به آن اشاره کرد این است که پایتون یک زبان برنامه نویسی “با تایپ ضعیف” است، به این معنی که یک متغیر می تواند در طول اجرای برنامه نوع خود را تغییر دهد، که در مورد زبان های برنامه نویسی “به شدت تایپ شده” صدق نمی کند. (مانند جاوا یا سی پلاس پلاس).

بنابراین چیزی که یک بود int می تواند در نهایت یک باشد str به راحتی، اگر به آن یک مقدار رشته اختصاص دهید.

در مثال های خود ما گهگاه از تابعی به نام استفاده می کنیم type(variable) که خوب، نوع متغیری را که به آن پاس داده ایم برمی گرداند.

ما همچنین از پوسته پایتون استفاده خواهیم کرد تا کد دست و پا گیر نداشته باشیم print هر چیزی که می خواهیم نشان دهیم

انواع داده های عددی

این نوع داده ها نسبتاً ساده هستند و مقادیر عددی را نشان می دهند. اینها می توانند مقادیر اعشاری، مقادیر ممیز شناور یا حتی اعداد مختلط باشند.

نوع داده عدد صحیح – int

این int نوع داده با مقادیر اعداد صحیح سروکار دارد. این به معنای ارزش هایی مانند 0، 1، -2 و -15، و نه اعدادی مانند 0.5، 1.01، -10.8، و غیره.

اگر کد زیر را به پایتون بدهید به این نتیجه می رسد a یک عدد صحیح است و به آن اختصاص می دهد int نوع داده به آن:

>>> x = 5
>>> type(x)
<class 'int'>

می‌توانستیم دقیق‌تر باشیم و چیزی در همین راستا بگوییم تا مطمئن شویم پایتون ما را درک کرده است 5 با این حال، به عنوان یک عدد صحیح، به طور خودکار دقیقاً همین کار را در زیر هود انجام می دهد:

>>> x = int(5)
>>> type(x)
<class 'int'>

شایان ذکر است که پایتون با هر دنباله ای از اعداد (بدون پیشوند) به عنوان یک عدد اعشاری رفتار می کند. این توالی، در واقع، محدود نیست.

یعنی بر خلاف برخی از زبان های دیگر مانند جاوا، ارزش the int حداکثر مقدار ندارد – نامحدود است.

این sys.maxsize در این صورت ممکن است خلاف واقع به نظر برسد، زیرا به این معنی است که حداکثر مقدار یک عدد صحیح است، اما اینطور نیست.

>>> x = sys.maxsize
>>> x
2147483647

به نظر می رسد که این یک مقدار صحیح باینری امضا شده 32 بیتی باشد، اما بیایید ببینیم اگر عدد بالاتری را به آن اختصاص دهیم چه اتفاقی می افتد. x:

>>> x = sys.maxsize
>>> x+1
2147483648

در واقع، ما حتی می توانیم تا آنجا پیش برویم:

>>> y = sys.maxsize + sys.maxsize
>>> y
4294967294

تنها محدودیت واقعی برای اینکه یک عدد صحیح چقدر می تواند بزرگ باشد، حافظه ماشینی است که پایتون را اجرا می کنید روی.

پیشوند اعداد صحیح

وقتی می خواهید یک مقدار عددی را به شکل دیگری بسته بندی کنید چه اتفاقی می افتد؟ می‌توانید دنباله‌ای از اعداد را پیشوند قرار دهید و به پایتون بگویید آنها را در سیستم دیگری درمان کند.

به طور خاص، پیشوندها:

  • 0b یا 0B – عدد صحیح شما را به باینری تبدیل می کند
  • 0o یا 0O – عدد صحیح شما را به اکتال تبدیل می کند
  • 0x یا 0X – عدد صحیح شما را به هگزادسیمال تبدیل می کند

بنابراین، بیایید اینها را امتحان کنیم:


>>> x = 5
>>> x
5


>>> x = 0b001
>>> x
1


>>> x = 0o5
>>> x
5


>>> x = 0x10
>>> x
16

نوع داده نقطه شناور – شناور

این float نوع داده می تواند اعداد ممیز شناور را تا 15 رقم اعشار نشان دهد. یعنی می تواند اعدادی مانند 0.3، -2.8، 5.542315467و غیره بلکه اعداد صحیح نیز هستند.

اعدادی که بعد از نقطه بیش از 15 عدد داشته باشند کوتاه می شوند. به عنوان مثال، پایتون در درک صحیح موارد زیر به عنوان a مشکلی ندارد float:

>>> y = 2.3
>>> type(y)
<class 'float'>
>>> y = 5/4
>>> type(y)
<class 'float'>

با این حال، همانطور که قبلا ذکر شد، اگر فقط بگوییم 5 پایتون آن را یک در نظر خواهد گرفت int نوع داده. اگر بنا به دلایلی می خواستیم الف float متغیری که دارای مقدار است 5، باید به صراحت به پایتون اطلاع دهیم:

>>> y = 5.0
>>> type(y)
<class 'float'>
>>> y = float(5)
>>> type(y)
<class 'float'>

این نوع داده را می توان برای نشان دادن برخی از “اعداد” خاص استفاده کرد NaN (“عدد نیست”)، +/-بی نهایت، و توان:

>>> y = float('-infinity')
>>> y
-inf
>>> y = float(5e-3)
>>> y
0.005
>>> y = float('nan')
>>> y
nan

یک نکته جانبی جالب اینجاست که چگونه است NaN رفتار می کند. یعنی دویدن y == float('nan') برمی گشت False، بااینکه y خوب یک عدد نیست

پیشنهاد می‌کنیم بخوانید:  نحوه تهیه Nexus Sonatype OSS در Orange PI 5 با Ansible

در واقع، با مقایسه مقادیر و مراجع، رفتار آن را می توان عجیب دید:

>>> x = float('nan')
>>> x == float('nan')
False
>>> x == x
False
>>> x is x
True

البته این اتفاق می افتد زیرا NaN قرار بود اینگونه رفتار کند، اما هنوز هم جالب است.

اگر با تفاوت بین آن ها آشنا نیستید == و is اپراتورها، راهنمای ما برای مقایسه اشیاء در پایتون را بررسی کنید – == در مقابل is!

اعداد مختلط – مختلط

آخرین نوع عددی که باید پوشش دهیم، عدد است complex نوع این نوع داده ای است که به ندرت استفاده می شود و وظیفه آن نمایش اعداد خیالی در یک جفت مختلط است.

شخصیت j برخلاف عدد برای بیان قسمت خیالی عدد استفاده می شود i بیشتر در ریاضیات استفاده می شود.

این به این دلیل است که پایتون به جای تمرین ریاضی نام‌گذاری بخش خیالی یک عدد مختلط، از تمرین مهندسی برق پیروی می‌کند.

بیایید ببینیم چگونه می توانیم اعداد مختلط را در پایتون اعلام کنیم:


>>> com = 1j


>>> com
1j


>>> com*com
(-1+0j)


>>> com2 = 3 + 1j


>>> com+com2
(3+2j)


>>> com = complex(1 + 2j)


>>> com
(1+2j)

توالی انواع داده

توالی انواع داده برای نمایش مجموعه هایی از نوعی استفاده می شود. این مجموعه عناصر می تواند از عناصری از یک نوع یا از انواع کاملا متفاوت تشکیل شود.

خ

رشته ها دنباله ای از کاراکترها هستند که با نقل قول های تک یا دو نشان داده می شوند. این شامل رشته های خالی (بدون هیچ کاراکتری بین نقل قول) می شود.

به روشی مشابه با اعداد صحیح، رشته ها واقعاً محدودیت طول سختی ندارند. تا زمانی که حافظه کامپیوتر شما از نظر فنی این امکان را به شما می دهد، می توانید یک رشته بسازید.

رشته ها بسیار رایج هستند زیرا آنها اساسی ترین راه برای نشان دادن دنباله ای از کاراکترها – یا کلمات هستند:

>>> my_string = 'some sequence of characters'
>>> my_string
'some sequence of characters'
>>> type(my_string)
<class 'str'>

آنها همچنین می توانند حاوی مقادیر خاصی باشند که برخی از آنها هستند \n اگر بخواهیم رشته هنگام چاپ یک خط جدید داشته باشد یا از کاراکترهای خاصی مانند \، ' یا " ما باید قبل از آنها یک بک اسلش اضافه کنیم، به عنوان مثال \.

اضافه کردن بک اسلش قبل از آنها فراخوانی است فرار کردن نویسه‌های خاص، چون نمی‌خواهیم معنای خاص آنها در نظر گرفته شود – می‌خواهیم از مقادیر تحت اللفظی آنها استفاده شود.

>>> my_string = "adding a new line \n and some double quotes \" to the string"
>>> print(my_string)
adding a new line 
 and some double quotes " to the string

راه دیگری برای اینکه نگران اضافه کردن بک اسلش قبل از هر کار نباشید ' یا " استفاده است ''' (نقل قول سه گانه) به جای آن، و پایتون هر جا که برای ما لازم باشد، بک اسلش را اضافه می کند:

>>> my_string = '''No need to worry about any ' or " we might have'''
>>> my_string
'No need to worry about any \' or " we might have'

ما می توانیم ماهیت “تایپ ضعیف” پایتون را در حین تبدیل a نشان دهیم float به یک str:


>>> z = 5.2


>>> type(z)
<class 'float'>

# Printing the value of `z`
>>> z
5.2

# Changing `z` into a string
>>> z = str(z)

# Checking the type of `z`
>>> type(z)
<class 'str'>

# Printing the value of `z`
>>> z
'5.2'

ما می توانیم آن را ببینیم z بدون مشکل خاصی نوع آن را تغییر داد.

فهرست

برخلاف رشته‌ها، فهرست‌ها می‌توانند شامل توالی‌های مرتب شده از هر نوع داده، حتی چندین نوع داده مختلف در یک فهرست باشند.

آنها با ارائه عناصر لیست بین ایجاد می شوند ()، به عنوان مثال (element1, element2) یا با نوشتن ساده () و بعداً عناصر را اضافه کنید.

روش‌های داخلی برای معکوس کردن، مرتب‌سازی، پاک کردن، گسترش فهرست، و همچنین الحاق (درج در انتها)، درج یا حذف عناصر در موقعیت‌های خاص و غیره، در میان روش‌های دیگر وجود دارد.

عناصر را می توان با نمایه آنها در لیست، با شروع ایندکس در لیست مشاهده کرد 0.

برای دیدن اولین عنصر لیست (اگر خالی نباشد) برای لیستی با نام some_list، شما می توانید استفاده کنید some_list(0) و همین امر در مورد سایر عناصر لیست صدق می کند.

پیشنهاد می‌کنیم بخوانید:  روش قالب بندی تاریخ ها در جاوا اسکریپت برای برنامه های کاربردی وب به خصوص، قالب بندی تاریخ یک کار بسیار رایج است. تقریباً به هر وب سایتی نگاهی بیندازید، خواه یک سرویس گیرنده ایمیل مانند جیمیل، توییتر یا حتی روی مقالات سوء استفاده پشته، به ناچار یک رشته تاریخ/زمان در جایی وجود دارد روی را page. در بسیاری از موارد، به ویژه برنامه های ...

این عناصر همچنین می توانند در یک شاخص تغییر کنند i با نوشتن some_list(i) = new_value.

بیایید لیستی تهیه کنیم و چند عملیات را انجام دهیم روی آی تی:


>>> some_list = ()


>>> some_list
()


>>> type(some_list)
<class 'list'>

# Appending an integer to the list
>>> some_list.append(5)

# Printing the value of the list
>>> some_list
(5)

# Inserting an element at the `0`th index
>>> some_list.insert(0, 'some string')

# Printing the value of the list
>>> some_list
('some string', 5)

# Printing the value of the element روی the `1`st index
>>> some_list(1)
5

# Appending another element ot the list
>>> some_list.append(123)

# Printing the value of the list
>>> some_list
('some string', 5, 123)

# Assigning the second element, an already existing value, to a new value
>>> some_list(2) = 'a'

# Printing the value of the list
>>> some_list
('some string', 5, 'a')

با این حال، اگر سعی کنید فهرستی را با انواع ناهماهنگ مرتب کنید:

>>> some_list.sort()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: '<' not supported between instances of 'int' and 'str'

از آنجایی که یک int نمی توان با الف مقایسه کرد str با < اپراتور – یک خطا رخ داده است. اگرچه اگر داشتیم:

>>> some_list = (1, 6, 4, 2, 8, 7)
>>> some_list
(1, 6, 4, 2, 8, 7)
>>> some_list.sort()
>>> some_list
(1, 2, 4, 6, 7, 8)

ما می توانستیم آن را مرتب کنیم.

چندتایی

این tuple نوع داده بسیار شبیه به لیست است، تنها تفاوت آن در تغییرناپذیر بودن آن و ایجاد آن با استفاده است () بجای (). این به این معنی است که هنگامی که یک را ایجاد کردید tuple، نمی توانید مقادیر موجود در آن را تغییر دهید.

آنها در بیشتر موارد کمی سریعتر از لیست ها هستند و برای محافظت از داده ها در برابر تغییر استفاده می شوند:


>>> some_tuple = ("some string", 5, True, float('nan'))


>>> some_tuple
('some string', 5, True, nan)


>>> some_tuple(0)
'some string'


>>> some_tuple(1:)
(5, True, nan)


>>> some_tuple(1:3)
(5, True)


>>> some_tuple(0) = 'some other string' 

نوع بولی – bool

این bool نوع داده برای نمایش مقادیر بولی استفاده می شود – True یا False. نوع داده نمی تواند حاوی مقدار دیگری باشد.

با این حال، پایتون دوباره بدون مشکل زیاد، بسیاری از چیزها را به تبدیل می کند bool. یعنی اگر اتفاقاً بگویید bool(5)، پایتون آن را در نظر خواهد گرفت True، در حالی که bool(0) در نظر گرفته خواهد شد False.

اساسا، 0 نادرست است و 1 درست است. هر چیزی فراتر از 1 به عنوان رفتار می شود True همچنین. مشابه همین اتفاق می افتد روی برای رشته هایی که اگر یک رشته خالی اختصاص دهید، به عنوان در نظر گرفته می شود False.

این بولین سازی (همچنین به نام صداقت در پایتون) به طور ضمنی در هر زمینه ای که پایتون انتظار a را دارد انجام می شود bool ارزش. مثلا گفتن if(5) همان اثر را دارد if(bool(5))، یعنی if(True).

بیایید ببینیم چگونه می‌توانیم Booleans را اعلام و استفاده کنیم:


>>> some_bool = True


>>> some_bool
True


>>> type(some_bool)
<class 'bool'>

# Assigning an empty string to a boolean
>>> some_bool = bool('')

# Checking the boolean's value
>>> some_bool
False

توجه داشته باشید که True و False کلمات کلیدی هستند و شما نمی توانید آنها را بگویید true یا false:

>>> some_bool = false

نوع دیکشنری – dict

برخلاف گروه Sequence از انواع داده، dicts (لغت نامه ها) مجموعه های نامرتب هستند. به طور خاص، مجموعه های نامرتب از (key, value) جفت این بدان معناست که برخلاف لیست‌ها برای مثال، مقادیر با کلیدها مرتبط هستند و نه با شاخص‌های عدد صحیح.

یک فرهنگ لغت دارای ساختار زیر است:

{
    key1 : value1,
    key2 : value2,
    ....
    keyN : valueN
}

مهم است که توجه داشته باشید که کلیدها دارند منحصر به فرد بودن، در حالی که ارزش ها اینطور نیستند. وقتی می خواهید یک مقدار را جستجو کنید – کلید آن را وارد کرده و جفت را بازیابی می کنید.

فرهنگ لغت را می توان با اضافه کردن ایجاد کرد (key, value) جفت بین {} (یاد آوردن، () برای لیست است و () برای تاپل ها است)، یا به سادگی یک خالی بنویسید {} و بعداً جفت ها را اضافه می کنیم.

کلیدها و مقادیر می توانند از انواع داده های مختلف باشند:


>>> type({})
<class 'dict'>

# Assigning keys and values to a dict
>>> some_dict = { 5 : 'five', 4 : 'four'}


>>> some_dict
{5: 'five', 4: 'four'}


>>> some_dict(5)
'five'


>>> some_dict(6) = 'six'


>>> some_dict
{5: 'five', 4: 'four', 6: 'six'}


>>> some_dict.pop(5) 
'five'


>>> some_dict(5) 

نتیجه

پایتون به گونه‌ای نوشته شده بود که نوشتن کد را تا حد امکان آسان کند، بدون اینکه کد بیش از حد مبهم باشد.

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

(برچسب‌ها به ترجمه)# python



منتشر شده در 1403-01-16 19:13:03

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید