آموزش

تاپل در پایتون چیست؟ آموزش Tuple و تفاوت آن با List

جلسه ۱۸ آموزش پایتون: تاپل در پایتون و تفاوت آن با لیست تاپل در پایتون یکی از ساختارهای مهم برای نگهداری چند مقدار در یک متغیر است که برخلاف لیست، پس از ایجاد قابل تغییر نیست. در این جلسه با ساخت Tuple، دسترسی به عناصر، اندیس‌گذاری، برش یا Slicing و متدهای مهم…

12 دقیقه مطالعه
  • پشتیبانی شبکه
  • Tuple
  • تغییر
  • print
  • List
  • استفاده
  • مقدار
  • numbers

خلاصه تحلیلی خبر

جلسه ۱۸ آموزش پایتون: تاپل در پایتون و تفاوت آن با لیست تاپل در پایتون یکی از ساختارهای مهم برای نگهداری چند مقدار در یک متغیر است که برخلاف لیست، پس از ایجاد قابل تغییر نیست. در این جلسه با ساخت 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 3

Slicing با ابتدای 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؟

تفاوت اصلی این دو ساختار در قابلیت تغییر آن‌هاست.

ویژگیListTuple
ساختار[]()
قابل تغییربلهخیر
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))

خروجی

4

len()در اینجا تعداد عناصر 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اولین بار درپایگاه خبری ارتباطات و فناوری اطلاعات. پدیدار شد.

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