🔗 تاپلها (Tuples) در پایتون
تاپلها (Tuple) یکی از ساختارهای داده در پایتون هستند که مانند لیستها، مجموعهای از عناصر را نگهداری میکنند، اما غیرقابل تغییر (Immutable) هستند. یعنی پس از ایجاد، نمیتوان عناصر آن را تغییر داد، حذف کرد یا اضافه کرد.
🔹 تعریف تاپل
# تاپل خالی
empty = ()
# تاپل با یک عنصر (به کاما توجه کنید)
single = (5,)
# تاپل از اعداد
numbers = (1, 2, 3, 4, 5)
# تاپل از انواع مختلف داده
mixed = (1, "hello", 3.14, True)
print(empty)
print(single)
print(numbers)
print(mixed)
⏳ برای اجرا دکمه را بزنید...
🔹 دسترسی به عناصر (مانند لیستها)
دسترسی به عناصر تاپل دقیقاً مانند لیستها با استفاده از اندیسها انجام میشود.
fruits = ("apple", "banana", "cherry", "date", "elderberry")
# دسترسی با اندیس مثبت
print(fruits[0]) # apple
print(fruits[2]) # cherry
# دسترسی با اندیس منفی
print(fruits[-1]) # elderberry
print(fruits[-3]) # cherry
# برش (Slicing)
print(fruits[1:4]) # ('banana', 'cherry', 'date')
print(fruits[::-1]) # معکوس کردن تاپل
⏳ برای اجرا دکمه را بزنید...
🔹 تفاوت تاپل و لیست
# لیست قابل تغییر است
my_list = [1, 2, 3]
my_list[1] = 100
print(my_list) # [1, 100, 3]
# تاپل غیرقابل تغییر است
my_tuple = (1, 2, 3)
# my_tuple[1] = 100 # این خطا میدهد!
⏳ برای اجرا دکمه را بزنید...
🔹 متدهای مفید تاپل
تاپلها متدهای کمی دارند، اما دو متد مهم count و index را پشتیبانی میکنند.
numbers = (1, 2, 3, 2, 4, 2, 5)
# len: طول تاپل
print(f"Length: {len(numbers)}")
# count: تعداد تکرار یک مقدار
print(f"Count of 2: {numbers.count(2)}")
# index: اندیس اولین occurrence
print(f"Index of 4: {numbers.index(4)}")
# max, min, sum (برای اعداد)
print(f"Max: {max(numbers)}")
print(f"Min: {min(numbers)}")
print(f"Sum: {sum(numbers)}")
⏳ برای اجرا دکمه را بزنید...
🔹 تکرار روی تاپل
fruits = ("apple", "banana", "cherry")
# حلقه for ساده
for fruit in fruits:
print(fruit)
# با enumerate (دسترسی به اندیس)
for index, fruit in enumerate(fruits):
print(f"{index}: {fruit}")
⏳ برای اجرا دکمه را بزنید...
🔹 عملگرها روی تاپل
tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)
# + : ترکیب دو تاپل
combined = tuple1 + tuple2
print(combined)
# * : تکرار تاپل
repeated = tuple1 * 3
print(repeated)
# in : بررسی عضویت
print(2 in tuple1) # True
print(10 in tuple1) # False
⏳ برای اجرا دکمه را بزنید...
🔹 تاپلهای تو در تو (Nested Tuples)
matrix = (
(1, 2, 3),
(4, 5, 6),
(7, 8, 9)
)
# دسترسی به عناصر
print(matrix[0][1]) # 2
print(matrix[2][0]) # 7
# تکرار روی سطرها
for row in matrix:
for element in row:
print(element, end=" ")
print()
⏳ برای اجرا دکمه را بزنید...
🔹 Unpacking (باز کردن تاپل)
# باز کردن تاپل به متغیرهای جداگانه
coordinates = (10, 20)
x, y = coordinates
print(f"x = {x}, y = {y}")
# باز کردن با ستاره (*) برای بقیه مقادیر
numbers = (1, 2, 3, 4, 5)
first, *rest = numbers
print(f"first: {first}, rest: {rest}")
# جایگزینی مقادیر با تاپل
a, b = 5, 10
a, b = b, a # جابهجایی مقادیر
print(f"a = {a}, b = {b}")
⏳ برای اجرا دکمه را بزنید...
🔹 تبدیل لیست به تاپل و بالعکس
my_list = [1, 2, 3, 4, 5]
# تبدیل لیست به تاپل
my_tuple = tuple(my_list)
print(f"Tuple: {my_tuple}")
# تبدیل تاپل به لیست
new_list = list(my_tuple)
print(f"List: {new_list}")
⏳ برای اجرا دکمه را بزنید...
🔹 مزایای استفاده از تاپل
- ✅ سرعت بالاتر — تاپلها سریعتر از لیستها هستند.
- ✅ امنیت بیشتر — دادهها به صورت ناخواسته تغییر نمیکنند.
- ✅ حافظه کمتر — تاپلها فضای کمتری اشغال میکنند.
- ✅ مناسب برای استفاده به عنوان کلید دیکشنری (لیستها نمیتوانند کلید باشند).
- ✅ نشاندهنده دادههای ثابت (مانند مختصات، تاریخ ثابت، تنظیمات).
🔹 مثال جامع: مدیریت اطلاعات دانشجویان با تاپل
# هر دانشجو به صورت یک تاپل (نام، سن، شهر)
students = [
("Ali", 22, "Tehran"),
("Saba", 24, "Shiraz"),
("Reza", 20, "Isfahan"),
("Mina", 23, "Tehran")
]
# نمایش اطلاعات
for name, age, city in students:
print(f"{name} is {age} years old and lives in {city}.")
# پیدا کردن دانشجویان تهران
tehran_students = [name for name, age, city in students if city == "Tehran"]
print(f"\nStudents from Tehran: {tehran_students}")
# محاسبه میانگین سن
average_age = sum(age for name, age, city in students) / len(students)
print(f"Average age: {average_age:.2f}")
⏳ برای اجرا دکمه را بزنید...
📌 نکات کلیدی
- ✅ تاپلها با
()تعریف میشوند و غیرقابل تغییر هستند. - ✅ برای تاپل یک عنصری، حتماً از کاما استفاده کنید:
(5,) - ✅ دسترسی به عناصر و برشها مانند لیستهاست.
- ✅ متدهای
count()وindex()را پشتیبانی میکنند. - ✅ با
inوnot inعضویت را بررسی کنید. - ✅ عملگرهای
+و*روی تاپلها کار میکنند. - ✅ Unpacking یک ویژگی قدرتمند برای باز کردن تاپلهاست.
- ✅ تاپلها سبکتر و سریعتر از لیستها هستند.