۵
لیستها و توپلها 📋
یاد میگیریم چطور دادهها رو گروهبندی کنیم!
لیستها (Lists)
لیستها mutable هستند (قابل تغییر) و با براکتهای [] تعریف میشوند:
ایجاد و دسترسی به لیستها
# ایجاد لیست
fruits = ["سیب", "موز", "پرتقال", "انگور"]
numbers = [1, 2, 3, 4, 5]
mixed = [1, "hello", 3.14, True]
# دسترسی به عناصر (ایندکس از 0 شروع میشود)
print(fruits[0]) # سیب
print(fruits[1]) # موز
print(fruits[-1]) # انگور (آخرین عنصر)
# تغییر عناصر
fruits[0] = "هلو"
print(fruits) # ['هلو', 'موز', 'پرتقال', 'انگور']
# طول لیست
print(len(fruits)) # 4
متدهای مهم لیست
fruits = ["سیب", "موز"]
# اضافه کردن
fruits.append("پرتقال") # ['سیب', 'موز', 'پرتقال']
fruits.insert(1, "هلو") # ['سیب', 'هلو', 'موز', 'پرتقال']
# حذف کردن
fruits.remove("موز") # ['سیب', 'هلو', 'پرتقال']
popped = fruits.pop() # پرتقال حذف میشود
fruits.pop(0) # سیب حذف میشود
# سایر متدها
numbers = [3, 1, 4, 1, 5]
numbers.sort() # [1, 1, 3, 4, 5]
numbers.reverse() # [5, 4, 3, 1, 1]
count = numbers.count(1) # 2
index = numbers.index(3) # 2
توپلها (Tuples)
توپلها immutable هستند (غیرقابل تغییر) و با پرانتزهای () تعریف میشوند:
ایجاد و کار با توپلها
# ایجاد توپل
colors = ("قرمز", "سبز", "آبی")
coordinates = (10, 20)
single_item = (42,) #注意: کاما ضروری است
# دسترسی به عناصر
print(colors[0]) # قرمز
print(colors[-1]) # آبی
# توپلها غیرقابل تغییر هستند
# colors[0] = "زرد" # Error! نمیتوان تغییر داد
# unpacking توپل
x, y = coordinates
print(x, y) # 10 20
# تبدیل بین لیست و توپل
colors_list = list(colors)
colors_tuple = tuple(colors_list)
💡 نکته: از توپلها برای دادههایی استفاده میکنیم که نباید تغییر کنند (مثل مختصات، تنظیمات ثابت، etc).
عملیات روی لیستها و توپلها
عملیات مختلفی رو میتونیم روی این ساختارها انجام بدیم:
عملیات رایج
# الحاق
list1 = [1, 2, 3]
list2 = [4, 5, 6]
combined = list1 + list2 # [1, 2, 3, 4, 5, 6]
# تکرار
repeated = list1 * 3 # [1, 2, 3, 1, 2, 3, 1, 2, 3]
# بررسی وجود عنصر
fruits = ["سیب", "موز", "پرتقال"]
print("سیب" in fruits) # True
print("انگور" in fruits) # False
# برش (Slicing)
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(numbers[2:5]) # [2, 3, 4]
print(numbers[:3]) # [0, 1, 2]
print(numbers[7:]) # [7, 8, 9]
print(numbers[::2]) # [0, 2, 4, 6, 8] (هر دومان)
print(numbers[::-1]) # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] (معکوس)
لیستهای تو در تو
میتونیم لیستهایی داشته باشیم که خودشون شامل لیستهای دیگه هستند:
لیستهای دو بعدی
# ماتریس 3x3
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
# دسترسی به عناصر
print(matrix[0][0]) # 1
print(matrix[1][2]) # 6
# پیمایش ماتریس
for row in matrix:
for item in row:
print(item, end=" ")
print()
# خروجی:
# 1 2 3
# 4 5 6
# 7 8 9
تمرین! 🧠
برنامهای بنویس که لیستی از اعداد بگیره و سپس:
- مجموع اعداد رو محاسبه کنه
- میانگین اعداد رو محاسبه کنه
- بزرگترین و کوچکترین عدد رو پیدا کنه
- لیست رو به صورت معکوس مرتب کنه (بدون استفاده از reverse)
جواب تمرین
numbers = [5, 2, 8, 1, 9, 3]
# 1. مجموع
total = sum(numbers)
print("مجموع:", total)
# 2. میانگین
average = total / len(numbers)
print("میانگین:", average)
# 3. بزرگترین و کوچکترین
max_num = max(numbers)
min_num = min(numbers)
print("بزرگترین:", max_num)
print("کوچکترین:", min_num)
# 4. معکوس کردن
reversed_list = numbers[::-1]
print("معکوس شده:", reversed_list)