تاپل در پایتون چیست؟ آموزش Tuple و تفاوت آن با List
جلسه ۱۸ آموزش پایتون: تاپل در پایتون و تفاوت آن با لیست تاپل در پایتون یکی از ساختارهای مهم برای نگهداری چند مقدار در یک متغیر است که برخلاف لیست، پس از ایجاد قابل تغییر نیست. در این جلسه با ساخت Tuple، دسترسی به عناصر، اندیسگذاری، برش یا Slicing و متدهای مهم…
خلاصه تحلیلی خبر
جلسه ۱۸ آموزش پایتون: تاپل در پایتون و تفاوت آن با لیست تاپل در پایتون یکی از ساختارهای مهم برای نگهداری چند مقدار در یک متغیر است که برخلاف لیست، پس از ایجاد قابل تغییر نیست. در این جلسه با ساخت Tuple، دسترسی به عناصر، اندیسگذاری، برش یا Slicing و متدهای مهم…
موضوعات اصلی: پشتیبانی شبکه، Tuple، تغییر، print، List، استفاده
جلسه ۱۸ آموزش پایتون: تاپل در پایتون و تفاوت آن با لیست
تاپل در پایتونیکی از ساختارهای مهم برای نگهداری چند مقدار در یک متغیر است که برخلاف لیست، پس از ایجاد قابل تغییر نیست. در این جلسه با ساخت Tuple، دسترسی به عناصر، اندیسگذاری، برش یا Slicing و متدهای مهم آن آشنا میشویم. همچنین تفاوت List و Tuple را بررسی میکنیم و یاد میگیریم چه زمانی بهتر است از تاپل استفاده کنیم. در پایان نیز با چند مثال واقعی و تمرین، کاربرد این ساختار را در برنامههای پایتونی یاد میگیریم.
تحقیق و تدوینمهدی گمرکی
اگر میخواهید ابتدا با ساختارهای قابل تغییر در پایتون آشنا شوید، پیشنهاد میکنیم قبل از ادامه این آموزشآموزش لیست در پایتونرا مطالعه کنید؛ چون در این جلسه قرار است تاپل را با لیست مقایسه کنیم و دقیقاً ببینیم هرکدام چه زمانی کاربرد دارند.
بعد از لیست، چرا باید تاپل را یاد بگیریم؟
در جلسه قبل بالیست (List)آشنا شدیم. لیست یکی از پرکاربردترین ساختارهای داده در پایتون است و به ما اجازه میدهد چند مقدار را در یک متغیر ذخیره کنیم.
برای مثال
products =["Laptop", "Mouse", "Keyboard"]اما همیشه نمیخواهیم دادههای ذخیرهشده قابل تغییر باشند.
فرض کنید اطلاعات یک محصول شامل نام، قیمت و کد محصول است
product = ("Laptop", 45000, "LP100")ممکن است بخواهیم این اطلاعات را ذخیره کنیم، اما نمیخواهیم برنامه در ادامه بهصورت تصادفی مقدار قیمت یا کد محصول را تغییر دهد.
اینجاست کهTupleاهمیت پیدا میکند.
تاپل نیز مانند لیست میتواند چند مقدار را در خود نگهداری کند، اما یک تفاوت بسیار مهم دارد
تاپل پس از ایجاد قابل تغییر نیست.
به این ویژگی در پایتونImmutableیا «تغییرناپذیر» گفته میشود.
تاپل در پایتون چیست؟
Tupleیک ساختار داده در پایتون است که برای نگهداری چند مقدار در کنار یکدیگر استفاده میشود.
یک تاپل میتواند شامل چند نوع داده مختلف باشد
user = ("Ali", 25, "Tehran")در این مثال سه مقدار داخل یک Tuple قرار گرفتهاند
- نام کاربر
- سن کاربر
- شهر کاربر
تاپل معمولاً با استفاده از پرانتز()ساخته میشود.
numbers = (10, 20, 30, 40)ساخت Tuple در پایتون
سادهترین روش ساخت تاپل استفاده از پرانتز است
numbers = (10, 20, 30)میتوانیم تاپل را با رشتهها نیز بسازیم
colors = ("red", "green", "blue")یا دادههای مختلف را کنار هم قرار دهیم
person = ("Sara", 28, True)پایتون اجازه میدهد انواع مختلف داده را در یک Tuple قرار دهیم.
یک Tuple خالی
مانند لیست، میتوان یک تاپل خالی نیز ایجاد کرد
empty_tuple = ()در این حالت، متغیرempty_tupleیک Tuple خالی است.
Tuple یک عضوی؛ نکتهای که نباید فراموش کنید
یکی از نکات مهم درباره Tuple این است که برای ساخت یک تاپل تکعضویویرگول اهمیت دارد.
این کد را ببینید
number = (10)این متغیر در واقع Tuple نیست؛ مقدار آن یک عدد صحیح است.
اما
number = (10,)یک Tuple تکعضوی ایجاد میکند.
میتوانیم این موضوع را بررسی کنیم
number = (10,) print(type(number))خروجی
بنابراین
(10)با
(10,)متفاوت است.
دسترسی به عناصر Tuple
مانند List، عناصر Tuple نیز دارایIndexیا اندیس هستند.
فرض کنید
fruits = ("apple", "banana", "orange")اندیس عناصر به شکل زیر است
apple → 0 banana → 1 orange → 2برای دسترسی به عنصر اول
print(fruits[0])خروجی
appleبرای عنصر دوم
print(fruits[1])خروجی
bananaو برای عنصر سوم
print(fruits[2])خروجی
orangeاستفاده از اندیس منفی
در Tuple نیز مانند List میتوان از اندیس منفی استفاده کرد.
fruits = ("apple", "banana", "orange")در این حالت
orange → -1 banana → -2 apple → -3مثلاً
print(fruits[-1])خروجی
orangeاین قابلیت زمانی کاربردی است که بخواهیم از انتهای داده به عناصر دسترسی داشته باشیم.
Slicing در Tuple
یکی دیگر از ویژگیهای مهم Tuple، امکان استفاده ازSlicingیا برش است.
فرض کنید
numbers = (10, 20, 30, 40, 50)اگر بخواهیم بخشی از Tuple را دریافت کنیم
print(numbers[1:4])خروجی
(20, 30, 40)نکته مهم این است که عنصر اندیس شروع در نظر گرفته میشود، اما عنصر اندیس پایان در نتیجه قرار نمیگیرد.
بنابراین
numbers[1:4]یعنی عناصر اندیسهای
1 2 3Slicing با ابتدای Tuple
میتوانیم از ابتدای Tuple نیز برش بگیریم
numbers = (10, 20, 30, 40, 50) print(numbers[:3])خروجی
(10, 20, 30)Slicing تا انتهای Tuple
برای دریافت بخشی از یک اندیس تا انتهای Tuple
numbers = (10, 20, 30, 40, 50) print(numbers[2:])خروجی
(30, 40, 50)مهمترین ویژگی Tuple؛ تغییرناپذیری
حالا به مهمترین تفاوت Tuple با List میرسیم.
یک List قابل تغییر است
numbers =[10, 20, 30]numbers[0]= 100 print(numbers)خروجی
[100, 20, 30]اما اگر همین کار را با Tuple انجام دهیم
numbers = (10, 20, 30) numbers[0]= 100پایتون خطا میدهد.
دلیل آن این است که TupleImmutableاست.
یعنی بعد از ایجاد Tuple نمیتوان عناصر آن را مستقیماً تغییر داد.
چرا تغییرناپذیری مهم است؟
شاید در نگاه اول تصور کنید تغییرناپذیر بودن یک محدودیت است.
اما در برنامهنویسی، گاهی دقیقاً همین ویژگی یک مزیت محسوب میشود.
فرض کنید اطلاعات یک مختصات جغرافیایی را ذخیره کردهایم
location = (35.6892, 51.3890)اگر قرار است این دو مقدار بهعنوان یک موقعیت ثابت استفاده شوند، منطقی است ساختاری داشته باشیم که در طول اجرای برنامه بهصورت تصادفی تغییر نکند.
در چنین شرایطی Tuple میتواند انتخاب مناسبی باشد.
List و Tuple چه تفاوتی دارند؟
یکی از مهمترین سؤالات هنگام یادگیری پایتون این است
چه زمانی از List استفاده کنیم و چه زمانی از Tuple؟
تفاوت اصلی این دو ساختار در قابلیت تغییر آنهاست.
| ویژگی | List | Tuple |
|---|---|---|
| ساختار | [] | () |
| قابل تغییر | بله | خیر |
| Index | دارد | دارد |
| Slicing | دارد | دارد |
| نگهداری چند مقدار | بله | بله |
| append | دارد | ندارد |
| remove | دارد | ندارد |
| pop | دارد | ندارد |
| کاربرد | دادههای قابل تغییر | دادههای ثابتتر |
برای مثال، اگر فهرست محصولات فروشگاه مرتباً تغییر میکند
products =["Laptop", "Mouse", "Keyboard"]List انتخاب طبیعیتری است.
اما اگر بخواهیم مشخصات ثابت یک محصول را به شکل یک مجموعه منظم نگهداری کنیم
product = ("Laptop", 45000, "LP100")Tuple میتواند مناسب باشد.
Tuple چه زمانی انتخاب بهتری است؟
یک قانون ساده برای شروع کار
اگر دادهها باید در طول اجرای برنامه تغییر کنند، List معمولاً گزینه مناسبی است؛ اگر دادهها قرار است ثابت بمانند، Tuple میتواند انتخاب مناسبی باشد.
برای مثال
فهرست خرید
shopping_list =["Milk", "Bread", "Eggs"]کاربر ممکن است محصولی را اضافه یا حذف کند؛ بنابراین List مناسب است.
مختصات
location = (35.6892, 51.3890)مختصات یک نقطه معمولاً بهعنوان یک مجموعه ثابت از مقادیر استفاده میشود؛ بنابراین Tuple انتخاب مناسبی است.
متدهای مهم Tuple
تعداد متدهای Tuple نسبت به List کمتر است.
دلیل آن روشن است: چون Tuple قابل تغییر نیست، متدهایی مانندappend()remove()یاsort()در آن وجود ندارند.
دو متد مهم Tuple عبارتاند از
count()index()
متد count
متدcount()مشخص میکند یک مقدار چند بار در Tuple تکرار شده است.
مثال
numbers = (10, 20, 10, 30, 10) print(numbers.count(10))خروجی
3یعنی عدد10سه بار در Tuple وجود دارد.
متد index
متدindex()اولین موقعیت یک مقدار را پیدا میکند.
مثال
colors = ("red", "blue", "green") print(colors.index("blue"))خروجی
1چونblueدر اندیس شماره ۱ قرار دارد.
اگر یک مقدار چند بار وجود داشته باشدindex()موقعیت اولین مورد را برمیگرداند.
مثلاً
numbers = (10, 20, 30, 20, 40) print(numbers.index(20))خروجی
1بررسی وجود یک مقدار در Tuple
مانند List میتوان با استفاده ازinبررسی کرد که یک مقدار در Tuple وجود دارد یا خیر.
fruits = ("apple", "banana", "orange") print("banana" in fruits)خروجی
Trueاگر مقدار وجود نداشته باشد
print("mango" in fruits)خروجی
Falseاین روش برای بررسی سریع وجود یک مقدار بسیار کاربردی است.
به دست آوردن تعداد عناصر Tuple
برای دریافت تعداد عناصر یک Tuple میتوان از تابعlen()استفاده کرد.
numbers = (10, 20, 30, 40) print(len(numbers))خروجی
4len()در اینجا تعداد عناصر Tuple را برمیگرداند.
پیمایش Tuple با حلقه for
از آنجا که Tuple یک مجموعه از عناصر است، میتوانیم باforروی آن پیمایش کنیم.
fruits = ("apple", "banana", "orange") for fruit in fruits: print(fruit)خروجی
apple banana orangeاین روش زمانی بسیار مفید است که بخواهیم تمام دادههای یک Tuple را پردازش کنیم.
مثال واقعی؛ اطلاعات کاربران
فرض کنید مشخصات چند کاربر را به شکل Tuple ذخیره کردهایم
users = ( ("Ali", 25), ("Sara", 28), ("Reza", 31) )حالا میتوانیم اطلاعات کاربران را پیمایش کنیم
for user in users: print(user)خروجی
('Ali', 25) ('Sara', 28) ('Reza', 31)حتی میتوانیم مقادیر هر Tuple را مستقیماً دریافت کنیم
for name, age in users: print(name, age)خروجی
Ali 25 Sara 28 Reza 31این قابلیت در پروژههای واقعی بسیار کاربردی است.
Tuple و Unpacking
یکی از قابلیتهای جالب TupleUnpackingیا بازکردن مقادیر آن است.
فرض کنید
person = ("Ali", 25, "Tehran")میتوانیم مقادیر را در سه متغیر قرار دهیم
name, age, city = person print(name) print(age) print(city)خروجی
Ali 25 Tehranپایتون مقادیر Tuple را بهترتیب در متغیرهای مربوط قرار میدهد.
تعداد متغیرها باید با تعداد مقادیر قابل تطبیق باشد.
مثلاً این کد مشکل دارد
person = ("Ali", 25, "Tehran") name, age = personچون سه مقدار داریم اما فقط دو متغیر تعریف کردهایم.
یک کاربرد جالب؛ جابهجایی دو متغیر
در پایتون میتوان از ویژگی Unpacking برای جابهجایی ساده مقادیر استفاده کرد
a = 10 b = 20 a, b = b, a print(a) print(b)خروجی
20 10این یکی از قابلیتهای جذاب زبان پایتون است که به ساختار Tuple و نحوه انتساب چندگانه مقادیر مرتبط است.
آیا Tuple واقعاً کاملاً تغییرناپذیر است؟
یک نکته مهم و کمی پیشرفتهتر وجود دارد.
خود Tuple تغییرناپذیر است، اما اگر داخل آن یک شیء قابل تغییر مانند List قرار داشته باشد، محتوای آن شیء میتواند تغییر کند.
مثال
data = ("Ali"[10, 20, 30]) data[1].append(40) print(data)خروجی
('Ali'[10, 20, 30, 40])در اینجا خود عنصر Tuple جایگزین نشده است.
بلکه List موجود درون Tuple تغییر کرده است.
این موضوع نشان میدهد که مفهوم Immutable بودن را باید دقیق درک کنیم
Immutable بودن Tuple به این معناست که عناصر و ارجاعهای درون Tuple را نمیتوان مستقیماً جایگزین کرد؛ اما اشیای قابل تغییر داخل آن ممکن است همچنان قابل تغییر باشند.
برای یک برنامهنویس مبتدی، فعلاً همین نکته را به خاطر داشته باشید و در مباحث پیشرفتهتر میتوانیم مفهوم آن را دقیقتر بررسی کنیم.
تبدیل List به Tuple
گاهی لازم است یک List را به Tuple تبدیل کنیم.
برای این کار میتوانیم ازtuple()استفاده کنیم
numbers =[10, 20, 30]numbers_tuple = tuple(numbers) print(numbers_tuple)خروجی
(10, 20, 30)تبدیل Tuple به List
برعکس این حالت نیز امکانپذیر است.
numbers = (10, 20, 30) numbers_list = list(numbers) print(numbers_list)خروجی
[10, 20, 30]این تبدیل زمانی کاربرد دارد که دادهای ابتدا بهصورت Tuple دریافت شده باشد اما بخواهیم آن را تغییر دهیم.
یک مثال واقعی از فروشگاه
فرض کنید مشخصات ثابت یک محصول را در Tuple نگهداری کنیم
product = ("Laptop", 45000, "LP100")میتوانیم اطلاعات آن را استخراج کنیم
name, price, code = product print("Name:", name) print("Price:", price) print("Code:", code)خروجی
Name: Laptop Price: 45000 Code: LP100اگر بعداً بخواهیم قیمت را تغییر دهیم، باید توجه داشته باشیم که Tuple مستقیماً قابل تغییر نیست.
اگر تغییرپذیری برای این داده ضروری باشد، List یا ساختار داده مناسب دیگری میتواند گزینه بهتری باشد.
خطاهای رایج در کار با Tuple
۱. تلاش برای تغییر عنصر Tuple
کد زیر اشتباه است
numbers = (10, 20, 30) numbers[0]= 100چون Tuple تغییرناپذیر است.
۲. فراموش کردن ویرگول در Tuple تکعضوی
این
item = (10)Tuple نیست.
اما این
item = (10,)یک Tuple تکعضوی است.
۳. اشتباه در Unpacking
اگر تعداد متغیرها با تعداد مقادیر هماهنگ نباشد، خطا دریافت میکنیم.
مثلاً
person = ("Ali", 25, "Tehran") name, age = personدر این حالت تعداد متغیرها کافی نیست.
۴. استفاده از متدهای List برای Tuple
کد زیر معتبر نیست
numbers = (10, 20, 30) numbers.append(40)Tuple متدappend()ندارد.
تمرینهای جلسه ۱۸
تمرین ساده ۱
یک Tuple با نام سه شهر ایجاد کنید و شهر دوم را چاپ کنید.
تمرین ساده ۲
یک Tuple شامل پنج عدد ایجاد کنید و با استفاده ازlen()تعداد عناصر آن را نمایش دهید.
تمرین متوسط ۱
Tuple زیر را ایجاد کنید
numbers = (10, 20, 30, 40, 50)سپس با استفاده از Slicing سه مقدار اول را چاپ کنید.
تمرین متوسط ۲
یک Tuple از نام چند محصول ایجاد کنید و با استفاده ازinبررسی کنید که آیا محصول"Laptop"در آن وجود دارد یا خیر.
تمرین متوسط ۳
Tuple زیر را ایجاد کنید
person = ("Sara", 28, "Tehran")سپس با استفاده از Unpacking، نام، سن و شهر را در سه متغیر جداگانه قرار دهید.
تمرین چالشی
یک Tuple شامل اطلاعات چند محصول ایجاد کنید
products = ( ("Laptop", 45000), ("Mouse", 1200), ("Keyboard", 2500) )با استفاده از حلقهforنام و قیمت هر محصول را چاپ کنید.
سپس برنامه را طوری تغییر دهید که فقط محصولاتی با قیمت بیشتر از2000نمایش داده شوند.
جمعبندی جلسه ۱۸
در این جلسه باتاپل در پایتونآشنا شدیم و دیدیم که Tuple یکی از ساختارهای مهم برای نگهداری چند مقدار است.
مهمترین نکات این جلسه عبارتاند از
- Tuple معمولاً با
()ساخته میشود. - عناصر Tuple دارای Index هستند.
- میتوان از Index منفی استفاده کرد.
- Slicing در Tuple امکانپذیر است.
- Tuple قابل تغییر نیست.
- Tuple دارای متدهای
count()وindex()است. - میتوان با
inوجود یک مقدار را بررسی کرد. - تابع
len()تعداد عناصر Tuple را مشخص میکند. - میتوان Tuple را با
forپیمایش کرد. - امکان Unpacking مقادیر Tuple وجود دارد.
- میتوان List را به Tuple و Tuple را به List تبدیل کرد.
- انتخاب بین List و Tuple به نیاز برنامه و تغییرپذیر بودن یا نبودن دادهها بستگی دارد.
به زبان ساده
List برای دادههایی که ممکن است تغییر کنند و Tuple برای مجموعه دادههایی که میخواهیم ساختارشان تغییر نکند، کاربرد بسیار خوبی دارند.
جلسه بعد؛ مجموعهها در پایتون
در جلسه بعد وارد یکی دیگر از ساختارهای مهم داده در پایتون میشویم
Set یا مجموعه در پایتون
در Set با مفاهیمی مانند حذف دادههای تکراریadd()remove()discard()اجتماع، اشتراک و تفاضل مجموعهها آشنا خواهیم شد.
این موضوع زمانی اهمیت بیشتری پیدا میکند که بخواهیم با مجموعهای از دادههای یکتا کار کنیم.
برای ادامه مسیر یادگیری، در جلسه بعد به سراغآموزش مجموعهها در پایتون (Set)میرویم و یاد میگیریم چگونه دادههای تکراری را حذف کنیم و عملیات مختلف مجموعهای را انجام دهیم.
سؤالات متداول درباره تاپل در پایتون
۱. تاپل در پایتون چیست؟
Tuple یک ساختار داده برای نگهداری چند مقدار است که پس از ایجاد، عناصر آن مستقیماً قابل تغییر نیستند.
۲. تفاوت List و Tuple در پایتون چیست؟
مهمترین تفاوت این است که List قابل تغییر است، اما Tuple تغییرناپذیر است.
۳. چگونه در پایتون Tuple بسازیم؟
معمولاً با استفاده از پرانتز ساخته میشود
numbers = (10, 20, 30)۴. آیا Tuple قابل تغییر است؟
خیر. نمیتوان عناصر Tuple را پس از ایجاد مستقیماً جایگزین یا حذف کرد.
۵. چگونه به یک عنصر Tuple دسترسی پیدا کنیم؟
مانند List از Index استفاده میکنیم
numbers = (10, 20, 30) print(numbers[0])۶. آیا در Tuple میتوان از Slicing استفاده کرد؟
بله. Tuple از Slicing پشتیبانی میکند
numbers = (10, 20, 30, 40) print(numbers[1:3])۷. متدهای مهم Tuple کداماند؟
دو متد مهم Tuple عبارتاند ازcount()برای شمارش یک مقدار وindex()برای پیدا کردن اولین موقعیت یک مقدار.
۸. چگونه بفهمیم یک مقدار در Tuple وجود دارد؟
میتوان از عملگرinاستفاده کرد
"Ali" in users۹. Tuple یک عضوی چگونه ساخته میشود؟
برای ساخت Tuple یک عضوی باید بعد از مقدار ویرگول قرار دهیم
item = (10,)۱۰. چه زمانی از Tuple استفاده کنیم؟
وقتی مجموعهای از دادهها را داریم که قرار نیست ساختار آنها در طول اجرای برنامه تغییر کند، Tuple میتواند انتخاب مناسبی باشد.
نوشتهتاپل در پایتون چیست؟ آموزش Tuple و تفاوت آن با Listاولین بار درپایگاه خبری ارتباطات و فناوری اطلاعات. پدیدار شد.
برای ارزیابی پایداری، امنیت و نگهداری این زیرساخت، راهنمای پشتیبانی شبکه را نیز مطالعه کنید.