تاپل در پایتون چیست؟
یک تاپل لیستی از یک مجموعه از اشیا تغییرناپذیر (immutable) پایتون است. تفاوت بین لیست و تاپل در این است که لیستها در کروشه اعلان میشوند و قابل تغییر هستند، اما تاپلها درون پرانتز اعلان میشوند و قابل تغییر نیستند. با اینحال میتوان بخشی از تاپلهای موجود را برای ایجاد تاپلهای جدید بکار گرفت.
ساختار تاپل
Tup = ('Jan','feb','march')
برای نوشتن یک تاپل خالی، باید یک جفت پرانتز خالی را قرار دهیم.
tup1 = ();
برای نوشتن یک تاپل با یک مقدار، باید یک کاما هم قرار داد، حتی اگر تنها یک مقدار وجود داشته باشد. همچنین در پایان باید یک سمی کالن (;) همانند کد زیر قرار دهید.
Tup1 = (50,);
ایندکسهای تاپل از ۰ شروع میشود، و میتوان عملیات الحاق، بخشبندی و … را روی آنها انجام داد.
عمل تخصیص (Assignment) در تاپلها
پایتون دارای ویژگی تخصیص تاپل میباشد که شما را قادر میسازد که در آن واحد، به بیش از یک متغیر مقداری نسبت دهید. در اینجا، ما به تاپل شماره ۱ اطلاعات فردی شامل نام، نام خانوادگی، سال تولد و… را نسبت دادهایم و به تاپل شماره ۲ مقادیر عددی مانند (۷،…،۱،۲،۳) را نسبت دادهایم.
برای مثال،
(name, surname, birth year, favorite movie and year, profession, birthplace) = Robert
کد در زیر آمده است
tup1 = ('Robert', 'Carlos','1965','Terminator 1995', 'Actor','Florida'); tup2 = (1,2,3,4,5,6,7); print(tup1[0]) print(tup2[1:4])
- تاپل شماره ۱ شامل لیستی از اطلاعات Robert میباشد.
- تاپل شماره ۲ شامل لیستی از اعداد است.
- مقدار [۰] از تاپل شماره یک و مقدار بین ۱ تا ۴ از تاپل شماره ۲ را فراخوانی میکنیم.
- کد را اجرا می کنیم، نام Robert از تاپل شماره ۱ برگردانده میشود و مقادیر عددی (۲،۳ و۴) از تاپل شماره ۲ بدست میآید.
بستهبندی (Packing) و گشودن بستهبندی (Unpacking)
در بستهبندی، مقادیر را درون یک تاپل جدید قرار میدهیم و در گشودن بستهبندی، آن مقادیر را برای بازگردانی به متغیرهایشان استخراج میکنیم.
x = ("Guru99", 20, "Education") # tuple packing (company, emp, profile) = x # tuple unpacking print(company) print(emp) print(profile)
مقایسه (Comapre) تاپلها
عملگر مقایسه در پایتون برای تاپلها نیز بکار گرفته میشود.
مقایسه با اولین المان از هر تاپل آغاز میشود. اگر باهم برابر نباشند، المان دوم مقایسه شده و به همین ترتیب ادامه مییابد.
عمل مقایسه، با مقایسه المان اول از هر تاپل شروع میشود.
اجازه دهید با یک مثال ادامه دهیم.
مورد ۱
a=(5,6) b=(1,4) if (a>b):print("a is bigger") else: print("b is bigger")
مورد ۲
a=(5,6) b=(5,4) if (a>b):print("a is bigger") else: print ("b is bigger")
مورد ۳
a=(5,6) b=(6,4) if (a>b):print("a is bigger") else: print("b is bigger")
مورد۱: مقایسه از المان اول از هر تاپل شروع میشود. در این مورد ۱ > ۵ است، بنابراین خروجی می شود: a is bigger
مورد۲: مقایسه با اولین المان از هر تاپل شروع میشود. در این مورد ۵ > ۵ است که نادرست است. بنابراین، سراغ المانهای دوم می رود، یعنی ۴ > ۶، بنابراین خروجی می شود: a is bigger
مورد۳: مقایسه با المان اول هر تاپل آغاز میشود. در این حالت ۶ > ۵ غلط است. بنابراین وارد بلوک else شده و چاپ خواهد کرد: b is bigger
استفاده از تاپلها به عنوان کلید در دیکشنری ها
از آنجایی که تاپلها hashable هستند و لیستها hashable نیستند، اگر بخواهیم یک کلید مرکب برای استفاده در دیکشنریها داشته باشیم، باید از تاپلها استفاده کنیم.
مثال: اگر قرار باشد یک دفترچه تلفن ایجاد کنیم که در آن زوجهای نام کوچک، نام خانوادگی به شماره تلفنها و… نگاشته شود، باید از کلید مرکب (Composite key) استفاده شود. فرض کنیم متغیرها را به صورت first، last و number اعلان کرده باشیم، در این صورت میتوان یک دیکشنری را با دستور زیر ایجاد داد:
directory[last,first] = number
عبارت درون کروشهها یک تاپل است. می توان از تخصیص تاپل درون یک حلقه for برای شمارش درون دیکشنری استفاده کرد.
for last, first in directory:
print first, last, directory[last, first]
این حلقه کلیدهای درون دفترچه که تاپل هستند را پیمایش مینماید. این حلقه المانهای هر تاپل را به last و first نسبت میدهد و سپس نام و شماره تلفن مربوطه را چاپ می کند.
تاپلها و دیکشنری
یک دیکشنری می تواند لیستی از تاپلها را با فراخوانی آیتمها برگرداند، که در این صورت هر تاپل یک زوج کلید مقدار (key value pair) میباشد.
a = {'x':100, 'y':200} b = list(a.items()) print(b)
حذف تاپلها
تاپلها غیرقابل تغییر بوده و قابل حذف کردن نیستند. نمیتوان آیتم ها را از درون یک تاپل حذف کرد. اما با استفاده از کلیدواژه زیر می توان کل یک تاپل را به یکباره حذف کرد
del
بخشبندی (Slicing) یک تاپل
برای اخذ یک مجموعه مشخص از زیرالمانهای یک تاپل یا لیست، از یک تابع یکتا به نام slicing استفاده می کنیم. Slicing نه تنها برای تاپلها، بلکه برای آرایهها و لیستها نیز قابل استفاده است.
x = ("a", "b","c", "d", "e") print(x[2:4])
خروجی این کد برابر خواهد بود با (‘c’,’d’) .
کد پایتون ۲ برای همه مثال های ذکر شده:
tup1 = ('Robert', 'Carlos','1965','Terminator 1995', 'Actor','Florida'); tup2 = (1,2,3,4,5,6,7); print tup1[0] print tup2[1:4] #Packing and Unpacking x = ("Guru99", 20, "Education") # tuple packing (company, emp, profile) = x # tuple unpacking print company print emp print profile #Comparing tuples #case 1 a=(5,6) b=(1,4) if (a>b):print "a is bigger" else: print "b is bigger" #case 2 a=(5,6) b=(5,4) if (a>b):print "a is bigger" else: print "b is bigger" #case 3 a=(5,6) b=(6,4) if (a>b):print "a is bigger" else: print "b is bigger" #Tuples and dictionary a = {'x':100, 'y':200} b = a.items() print b #Slicing of Tuple x = ("a", "b","c", "d", "e") print x[2:4]
توابع داخلی (Built-in) برای تاپلها
برای انجام کارهای مختلف، میتوان از توابع داخلی مانند ()all()، any()، enumerate()، max()، min()، sorted()، len()، tuple و … استفاده کرد.
مزایای تاپلها نسبت به لیست
- شمارش درون یک تاپل نسبت به لیست سریعتر است، چون تاپلها غیرقابل تغییر هستند.
- تاپلهایی که دارای المانهای غیرقابل تغییر هستند را میتوان به عنوان کلید برای دیکشنری استفاده کرد، اما این مورد برای یک لیست مقدور نیست.
- اگر داده غیرقابل تغییری داشته باشید، پیاده سازی آن به صورت تاپل به شما این تضمین را میدهد که داده در برابر نوشتن محافظت شده است.
خلاصه
پایتون دارای ویژگی تخصیص تاپل است که شما را قادر میسازد تا به بیش از یک متغیر در آن واحد، مقداری را نسبت دهید.
- بستهبندی و گشودن بسته تاپلها
- در بستهبندی، مقادیر را درون یک تاپل جدید قرار میدهیم و هنگام گشودن بسته، مقادیر را برای بازگردانی به متغیرهایشان استخراج میکنیم.
- عملگر مقایسه در پایتون برای تاپلها نیز کاربرد دارد.
- تاپلها hashable هستند، در حالی که لیستها نیستند.
- اگر نیاز به ایجاد یک کلید مرکب برای استفاده در یک دیکشنری داشته باشیم، باید از تاپل استفاده کنیم.
- یک دیکشنری میتواند لیستی از تاپلها را با فراخوانی آیتمهایش برگرداند، که در این حالت هر تاپل یک زوج کلید مقدار میباشد.
- تاپلها غیرقابل تغییر هستند و نمیتوان آنها را حذف کرد. نمیتوان مقادیر را از یک تاپل حذف کرد. اما میتوان کل یک تاپل را با استفاده از کلیدواژه «del» حذف کرد.
- برای اخذ یک مجموعه مشخص از زیرالمانهای یک تاپل یا لیست، از تابع یکتایی به نام slicing استفاده میکنیم.
منبع: ترجمه از سایت guru99.com
اگر این نوشته برایتان مفید بود لطفا کامنت بنویسید.
عالی بود.