انواع داده در پایتون
همانطور که در مقاله قبل “قوانین نام گذاری متغییر ها در پایتون” هم به آن اشاره کردیم، متغییر ها یا همان شناسه ها بخش هایی از حافظه هستند که برای دسترسی ساده تر برنامه نویسان نام گذاری می شوند و برنامه نویس از طریق این نام می تواند به آن بخش از حافظه برای ذخیره سازی داده های خود به راحتی دسترسی داشته باشد.
از آنجایی که همه چیز در زبان پایتون یک شی محصوب می شود، انواع داده در پایتون در واقع کلاس هایی هستند که متغییر ها آبجکت هایی از این کلاس ها می باشند.
زبان پایتون از چندین نوع داده مختلف استفاده می کند که در ادامه به صورت مفصل به معرفی هر یک از این انواع داده خواهم پرداخت.
- انواع عددی (Numeric Types): شامل اعداد صحیح (int)، اعداد اعشاری (float)، اعداد مختلط (complex)
- انواع توالی یا دنباله ها (Sequence Types): شامل لیست ها (list)، تاپل ها(tuple)، رنج ها (range)
- انواع رشته ای (Text Type): شامل رشته ها (string)
- انواع مجموعه ها (Set Type): شامل مجموعه ها (set)، مجموعه های غیر قابل تغییر (frozenset)
- انواع نقشه برداری (Mapping Type): شامل دیکشنری ها (dict)
- انواع بولی (Boolean Type): شامل درست و غلط ها (boolean)
فهرست مطالب این مقاله
انواع عددی (Numeric Types)
همانطور که در بالا مشاهده کردید، داده های عددی خود به سه دسته اعداد صحیح (int)، اعداد اعشاری یا ممیز شناور (float) و اعداد مختلط (complx) تقسیم می شوند.
می توان با کمک تابع Type نوع کلاس یک متغییر را مشاهده کرد، و همچنین با تابع isinstance می توان بررسی کرد که آیا یک متغییر به یک کلاس تعلق دارد یا خیر. به مثال های زیر توجه کنید :
>>> a = 5
>>> print(type(a))
>>> a = 2.0
>>> print(type(a))
>>> a = 1 + 2j
>>> print(type(a))
اعداد صحیح (integer)
شامل یک مقدار عددی بدون اعشار، که می تواند مثبت یا منفی باشد طول اعداد صحیح (integer) نامحدود می باشد.
>>> x = 1
>>> y = 35656222554887711
>>> z = -3255522
>>> print(type(x))
>>> print(type(y))
>>> print(type(z))
اعداد اعشاری یا ممیز شناور(float)
شامل اعداد مثبت یا منفی هستند که دارای یک یا چند رقم اعشار باشند.
>>> x = 1.10
>>> y = 1.0
>>> z = -35.59
>>> print(type(x))
>>> print(type(y))
>>> print(type(z))
تعریف اعداد نماد علمی (e)
اعداد اعشاری می توانند به صورت نماده علمی “e” نیز نمایش داده شوند.
نماد علمی یک نوع نمایش برای اعداد اعشاری می باشد، نمایش نماد علمی به اعداد گفته می شود که حتمی یک رقم قبل از ممیز و در قسمت صحیح دارند و باقی ارقام بعد از ممیز قرار می گیرد. به عنوان مثال عدد 32.125 به صورت نماد علمی برابر است با 3.2125e1 که در اینجا عدد بعد از نماد e نشان دهنده تعداد دفعاتی است که لازم است عدد قبل از e در 10 ضرب شود تا به عدد اولیه قبل از تغییر شکل به نماد علمی تبدیل شود . به مثال زیر برای تبدیل عدد در نماد علمی به عدد اولیه توجه فرمایید.
3.2125e1 = 3.2125 * 101 = 3.2125 * 10 = 32.125
با درنظر گرفتن نوع تبدیل در مثال بالا، برای تبدیل عدد 1.0025e-2 به شکل اولیه این عدد برابر است با 1.0025 * -2 10 که عدد حاصل 0.0010025 خواهد بود.
>>> x = 35e3
>>> y = 12E4
>>> z = -87.7e100
>>> print(type(x))
>>> print(type(y))
>>> print(type(z))
اعداد مختلط (complex)
شامل اعداد که ترکیب اعداد حقیقی و موهومی هستند و دارای کاربرد های خاص خود می با شند.
>>> x = 3+5j
>>> y = 5j
>>> z = -5j
>>> print(type(x))
>>> print(type(y))
>>> print(type(z))
دنباله ها یا توالی ها برای ذخیره مجموعه از داده ها در یک متغییر کاربرد دارد، انواع توالی در پایتون (Python) مثل لیست ها (list) ، تاپل ها (tuple) را به ترتیب شرح خواهیم داد:
لیست ها (list)
از لیست ها برای ذخیره چندین داده در یک متغییر استفاده می شود و برای تعداد داده در آن یا به عبارتی طول لیست ها هیچ محدودیتی وجود ندارد. معمولا از لیست برای تولید توالی از عناصر همگن استفاده می شود، لیست ها با قرار دادن داده ها در داخل کروشه [ ] به صورتی که هر داده با کاما ( , ) از هم جدا شده به شکل زیر تعریف می شوند:
>>> my_list = [1 , 2.5 , 'A' , 'Pronesh']
برای دسترسی به عناصر یک لیست می توان شماره اندیس عنصر مورد نظر را داخل کروشه [ ] مشخص کرد و از این طریق به عنصر مد نظر دسترسی داشت، لازم به ذکر است شماره اندیس در پایتون از 0 شروع می شود.
>>> my_list = [1 , 2 , 3 , 4 , 5]
>>> print('my_list[1] = ', my_list[1])
my_list[1] = 2
>>> print('my_list[0:3] = ', my_list[0:3])
my_list[0:3] = [1, 2, 3]
>>> print('my_list[4:] = ', my_list[4:])
my_list[4:] = [5]
عناصر موجود در لیست قابل ویرایش هستند، یعنی می توان مقادیر آن ها را تغییر داد و یا حذف کرد. برای درک بهتر این موضوع به چند مثال که در زیر به آن اشاره شده توجه فرمایید:
>>> my_list = [ 1 , 2 , 3 , 4 ]
>>> print(my_list)
[1, 2, 3, 4]
>>> my_list[0] = 10
>>> print(my_list)
[10, 2, 3, 4]
>>> my_list[1] = my_list[1] * 10
>>> print(my_list)
[10, 20, 3, 4]
>>> my_list[2:4] = [30 , 40]
>>> my_list
[10, 20, 30, 40]
>>> my_list.remove(20)
>>> print(my_list)
[10, 30, 40]
تاپل ها (tuple)
تاپل ها دقیقا شبیه به لیست ها (list) هستند، با این تفاوت که در تاپل ها برعکس لیست نمی توان مقادیر عناصر تعریف شده را تغییر داد، در صورتی که این کار در لیست ها به سادگی امکان پذیر بود. معمولا از تاپل ها برای تولید دنباله هایی با عناصر ناهمگن استفاده می شود، تفاوت بعدی در نحوه تعریف تاپل ها می باشد، که به آن خواهیم پرداخت.
یک تاپل با قرارداد عناصر آن داخل پرانتز ( ) به شکلی که عناصر با کاما ( ، ) از هم جدا شده باشند تعریف می شود.
my_tuple = (1 , 2.5 , 5+3j , 'A' , 'Pronesh')
برای دسترسی به عناصر یک تاپل مشابه لیست ها، می توان شماره اندیس عنصر مورد نظر را داخل کروشه [ ] مشخص کرد و از این طریق به عنصر مد نظر دسترسی داشت.
>>> my_tuple = (1 , 2 , 3 , 4 , 5)
>>> print('my_tuple[1] = ', my_tuple[1])
my_tuple[1] = 2
>>> print('my_tuple[0:3] = ', my_tuple[0:3])
my_tuple[0:3] = (1, 2, 3)
>>> print('my_tuple[4:] = ', my_tuple[4:])
my_tuple[4:] = (5)
رشته ها (string)
به دنباله ای از کارکتر ها که در کنار یک دیگر در یک دنباله وجود دارند رشته گفته می شود ، متنی که می خواهیم به متغییر رشته ای انتصاب دهیم باید داخل تک کتیشن ( ‘ ) یا دابل کتیشن ( ” ) و حتی تریپل کتیشن ( ”’ ) قرار گیرد، البته از ( ”’ ) معمولا برای رشته های چند خطی استفاده می شود. برای درک بهتر این موضوع به مثال های زیر توجه فرمایید.
>>> my_str = 'This is a string'
>>> print(my_str)
This is a string
>>> my_str = "This is a string"
>>> print(my_str)
This is a string
>>> my_str = '''A multiline
... string'''
>>> print(my_str)
A multiline
string
برای دسترسی به عناصر یک رشته (string) می توان مانند لیست ها و تاپل ها شماره اندیس عنصر مورد نظر را داخل کروشه [ ] مشخص کرد و از این طریق به عنصر مد نظر دسترسی داشت.
>>> my_str = 'pronesh.com'
>>> print('str = ' , my_str)
str = pronesh.com
>>> print('str[0] = ' , my_str[0])
str[0] = p
>>> print('str[10] = ' , my_str[10])
str[10] = m
>>> print('str[0:7] = ' , my_str[0:7])
str[0:7] = pronesh
>>> print('str[7:] = ' , my_str[7:])
str[7:] = .com
مجموعه ها (set)
مجموعه ها مانند لیست و تاپل یک نوع برای ذخیره چندین داده در یک متغییر استفاده می شود، مقادیر موجود در یک مجموعه نامرتب، غیر قابل تغییر و غیر تکراری هستند، نامرتب بودن یعنی در مجموعه ها نمی توان برای مقادیر ترتیب خاصی در نظر گرفت، به شکل کلی در مجموعه ها برخلاف داده هایی مثل لیست ها اندیس وجود ندارد و نمی توان با اندیس به عناصر یک مجموعه دسترسی داشته باشیم.
مجموعه ها غیر قابل تغییر هستند، عناصر یک مجموعه همواره یکتا هستند، یعنی در یک مجموعه هیچ داده تکراری وجود ندارد. در صورتی که در تعریف یک مجموعه مقادیر تکراری قرار بگیرد پایتون به صورت خودکار فقط یکی از مقادیر را نگاه داشته و باقی را حذف خواهد کرد.
مجموعه ها در پایتون با قرار دادن مقادیر بین آکولاد { } و جدا کردن داده ها با کاما ( ، ) از یک دیگر تعریف می شوند. به دلیل غیر قابل تغییر بودن مجموعه ها عناصر تشکیل دهنده یک مجموعه نمیی توانند شامل داده های قابل تغییر مثل لیست ها و دیکشنری ها (dict) باشد.
>>> my_set = {1 , 2 , 3}
>>> print(my_set)
{1, 2, 3}
>>> my_set = {1.5 , 'Pronesh' , (1 , 2 , 3)}
>>> print(my_set)
{1.5, (1, 2, 3), 'Pronesh'}
>>> my_set = {1 , 2 , 3 , 4 , 1 , 4}
>>> print(my_set)
{1, 2, 3, 4}
>>> my_set = {1 , 2 , 3 , [4 , 1]}
Traceback (most recent call last):
File "", line 1, in
TypeError: unhashable type: 'list'
دیکشنری ها (dect)
دیکشنری ها نیز مثل سایر نوع های داده لیستی برای ذخیره مجموعه ای از داده ها در یک متغییر مناسب هستند، با این تفاوت که ما در انواع داده لیستی که قبلا بررسی کردیم مثل لیست ها، تاپل ها، مجموعه ها و یا مجموعه های منجمد (frozenset) یا به اندیس ها دسترسی نداشتیم و یا اگر به اندیس ها دسترسی داشتیم مثل نوع دادع لیست کنترلی بر روی اندیس ها نداشتیم، و پایتون خود به ترتیب عناصر را شماره گذاری می کرد، اما گاهی نیاز است که اندیس ها نا متوالی باشند و یا بر اساس نیاز برنامه نویس شماره گذاری شوند، در اینجا دیکشنری ها به داد ما خواهند رسید، در دیکشنری شما لیستی از داده ها دارید که اندیس آن ها را خودتان انتخاب کرده اید، در حقیقت دیکشنری ها یک نوع لیست کلید-مقدار (key-value) می باشند.
همانطور که از نام این نوع داده نیز مشخص است عملکرد دیکشنری ها مانند یک فرهنگ لغت می باشد، در فرهنگ لغت یک کلمه با معادل و هم معنی آن متناظر می شود، در نوع داده دیکشنری نیز به همین ترتیب عمل می شود شما یک کلید را به یک مقدار (value) متصل می کنید، کلید ها همواره غیر قابل تکرار هستند ولی مقادیر می توانند تکراری مورد استفاده قرار گیرند.
دیکشنری ها در پایتون داخل گیومه { } تعریف می شوند و هر جفت کلید-مقدار با استفاده از ( ، ) از هم جدا می شوند، همچنین کلید ها با عملگر ( : ) به مقادیر نسبت داده می شوند. با چند مثال با نحوه تعریف یک دیکشنری آشنا خواهید شد.
# empty dictionary
my_dict = {}
# dictionary with integer keys
my_dict = {1: 'apple', 2: 'ball'}
# dictionary with mixed keys
my_dict = {'name': 'John', 1: [2, 4, 3]}
به عناصر یک دیکشنری با قرار دادن کلید مد نظر در بین براکت [ ] می توان دسترسی داشت، اگر کلیدی که استفاده شده در دیکشنری وجود نداشته باشد پایتون اعلام خطا خواهد کرد. به مثال های زیر در این مورد توجه کنید :
>>> my_dict = {'name' : 'naser' , 'age' : 46}
>>> print(my_dict['name'])
naser
>>> print(my_dict['address'])
Traceback (most recent call last):
File "", line 1, in
KeyError: 'address'
تبدیلات انواع داده
در پایتون این امکان در نظر گرفته شده است که بتوان انواع داده ها را به یکدیگر تبدیل کرد، مثل str، float، int و … . البته محدودیت های نیز در این عملیات وجود دارد برای مثال اگر یک عدد اعشاری () را به یک عدد صحیح () تبدیل کنیم مقدار اعشار عدد به صورت کلی حذف می شود و قسمت صحیح باقی خواهد ماند، یا در تبدیل رشته به عدد رشته انتخاب شده باید حتمی قابل تبدیل به عدد باشد، کارکتر ها و حروف الفبا قابل تبدیل به اعداد نیستند، در غیر ای صورت پایتون پیغام خطا صادر می کند. در این راستا با چند مثال شما را با نحوه تبدیل مقادیر در پایتون بیشتر آشنا خواهیم کرد.
>>> float(5)
5.0
>>> int(10.6)
10
>>> int(-10.6)
-10
>>> float('2.5')
2.5
>>> str(25)
'25'
>>> int('1p')
Traceback (most recent call last):
File "", line 301, in runcode
File "", line 1, in
ValueError: invalid literal for int() with base 10: '1p'
>>> set([1,2,3])
{1, 2, 3}
>>> tuple({5,6,7})
(5, 6, 7)
>>> list('hello')
['h', 'e', 'l', 'l', 'o']
>>> dict([[1,2],[3,4]])
{1: 2, 3: 4}
>>> dict([(3,26),(4,44)])
{3: 26, 4: 44}
در این مقاله شما را با انواع داده ها در پایتون و تبدیلات آن ها آشنا شدید، در مقالات بعدی به شکل مفصل تر و تفکیک شده به شرح انواع داده در پایتون خواهیم پرداخت و شما را با مثال های بیشتر و بررسی حالت های خاص در تعریف و استفاده از انواع داده آشنا می کنیم.
دیدگاهتان را بنویسید