تعریف لیست (List) در پایتون
لیست (List) یکی از ساختارهای دادهای (Data Structure) در زبان پایتون است که برای ذخیرهسازی مجموعهای از دادهها در یک متغیر واحد استفاده میشود. لیستها در پایتون قابل تغییر (Mutable) هستند؛ یعنی میتوان بعد از ایجاد، عناصر آنها را تغییر، حذف یا اضافه کرد.
نوع دادههایی که میتونن داخل لیست باشن
در پایتون، لیستها میتونن شامل انواع مختلف داده باشن؛ یعنی لازم نیست همه عناصر از یک نوع باشن. مثلاً داخل یه لیست میتونه هم عدد باشه، هم رشته، هم بولین و حتی لیست دیگه.
my_list = [12, "hamid", True, 4.5, [1, 2, 3]]
- انواع دادهای که میتونه داخل لیست قرار بگیره:
- عدد صحیح (int)، عدد اعشاری (float)، رشته (str)، مقدار بولی (bool)، لیست تو در تو (nested list)، هر نوع دادهی دیگر (مثل tuple، dict، object و ...)
شکل ظاهری لیست
لیستها با استفاده از براکت [ ] ساخته میشن و عناصر با کاما , از هم جدا میشن:
numbers = [1, 2, 3, 4, 5]
ویژگیهای اصلی لیست در پایتون
1. دسترسی به اعضا (Accessing Elements)
در لیستها میتونیم با استفاده از اندیس (index) به هر عضو دسترسی پیدا کنیم. اندیسها از 0 شروع میشن.
names = ["Ali", "Sara", "Reza"]
print(names[0]) #output: Ali
print(names[2]) #output: Reza
میتونیم از اندیس منفی هم استفاده کنیم که از آخر لیست شمارش میکنه:
print(names[-1]) #output: Reza
2. قابل تغییر بودن (Mutable بودن)
لیستها mutable هستند، یعنی بعد از ساخته شدن هم میتونیم مقدار اعضا رو تغییر بدیم، عضو جدید اضافه کنیم یا عضو حذف کنیم.
numbers = [10, 20, 30]
numbers[1] = 50 # تغییر مقدار دوم
numbers.append(40) # افزودن عضو جدید
print(numbers) #output: [10, 50, 30, 40]
3. پذیرفتن مقادیر تکراری (Duplicate Values)
لیستها میتونن اعضای تکراری داشته باشن.
nums = [1, 2, 2, 3, 3, 3]
print(nums) #output: [1, 2, 2, 3, 3, 3]
4. دارای ترتیب (Ordered بودن)
لیستها در پایتون دارای ترتیب مشخصی هستند؛ یعنی عناصر به همان ترتیبی که اضافه شدن نمایش داده میشن.
fruits = ["apple", "banana", "cherry"]
print(fruits) #output: ['apple', 'banana', 'cherry']
روشهای ساخت لیست خالی در پایتون
گاهی نیاز داریم یه لیست خالی بسازیم تا بعداً دادهها رو داخلش بریزیم. برای این کار دو روش اصلی وجود داره:
روش 1: با استفاده از براکتهای مربعی []
a = []روش 2: با استفاده از تابع list()
b = list()هر دو روش یه لیست خالی میسازن و هیچ تفاوت عملکردی ندارن. میتونیم با تابع type() بررسی کنیم:
print(type(a)) # output: <class 'list'>
print(type(b)) # output: دسترسی به اعضای لیست با اندیس و برش (Indexing & Slicing)
لیستها چون دارای ترتیب هستند، میتونیم با استفاده از اندیس و اسلایسینگ به اعضا دسترسی پیدا کنیم.
۱. دسترسی با اندیس (Indexing)
fruits = ["apple", "banana", "cherry", "date"]
print(fruits[0]) # output: apple
print(fruits[2]) # output: cherry
اندیس منفی
print(fruits[-1]) # output: date
print(fruits[-2]) # output: cherryنکته مهم: اگر اندیسی وارد کنیم که خارج از محدودهی لیست باشه، خطای IndexError میگیریم.
۲. برش یا اسلایسینگ (Slicing)
فرمول کلی اسلایس:
list[start:end:step]
fruits = ["apple", "banana", "cherry", "date", "fig"]
print(fruits[1:4]) # ['banana', 'cherry', 'date']
print(fruits[:3]) # ['apple', 'banana', 'cherry']
print(fruits[2:]) # ['cherry', 'date', 'fig']
print(fruits[::2]) # ['apple', 'cherry', 'fig']مثالهای عملی
مثال: تغییر عضو با اندیس
fruits = ["apple", "banana", "cherry"]
fruits[1] = "mango"
print(fruits)
output: ['apple', 'mango', 'cherry']مثال: ادغام دو لیست
list1 = [1, 2, 3]
list2 = [4, 5, 6]
result = list1 + list2
print(result)
output: [1, 2, 3, 4, 5, 6]مثال: ضرب لیست
fruits = ["apple", "banana"]
print(fruits * 2)
output: ['apple', 'banana', 'apple', 'banana']مثال: پیمایش با حلقه for
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(fruit)
output:
apple
banana
cherryمتدهای پرکاربرد لیست
متد append()
تعریف و کاربرد: append() یک عضو را در انتهای لیست اضافه میکند. لیست اصلی تغییر میکند و مقدار برگشتی None است.
numbers = []
for i in range(5):
num = int(input("enter your number: "))
numbers.append(num)
print("final_list:", numbers)متد extend()
extend() چند عضو را از یک iterable جداگانه به لیست اضافه میکند.
numbers = [1, 2, 3]
numbers.extend([4, 5, 6])
print(numbers)
output: [1, 2, 3, 4, 5, 6]متد insert()
قابلیت افزودن عضو در موقعیت دلخواه: list.insert(index, value)
numbers = [10, 20, 30]
numbers.insert(1, 15) # اضافه کردن 15 در اندیس 1
print(numbers)
output:
[10, 15, 20, 30]متد index()
برمیگرداند اندیس اولین وقوع یک مقدار در لیست: list.index(value)
اگر مقدار وجود نداشته باشد، خطای ValueError میدهد.
متد pop()
حذف و برگرداندن عضو با اندیس مشخص (یا آخرین عضو در صورت عدم تعیین اندیس): list.pop(index)
numbers = [10, 20, 30, 40]
removed = numbers.pop()
print("Removed:", removed)
print("List after pop:", numbers)
output:
Removed: 40
List after pop: [10, 20, 30]متد remove()
حذف اولین عضو مطابق مقدار مشخص شده: list.remove(value)
numbers = [10, 20, 30, 20, 40]
numbers.remove(20) # حذف اولین 20
print(numbers)
output: [10, 30, 20, 40]متد count()
تعداد دفعات تکرار یک مقدار را برمیگرداند: list.count(value)
numbers = [10, 20, 30, 20, 40, 20]
count_20 = numbers.count(20)
print("Number of 20s:", count_20)
output:
Number of 20s: 3متد sort()
مرتبسازی لیست (عمومی): list.sort(reverse=False). لیست اصلی تغییر میکند.
numbers = [30, 10, 40, 20]
numbers.sort()
print(numbers)
output:
[10, 20, 30, 40]
مرتبسازی نزولی
numbers = [30, 10, 40, 20]
numbers.sort(reverse=True)
print(numbers)
output:
[40, 30, 20, 10]متد clear()
پاک کردن تمام اعضای لیست: list.clear()
numbers = [10, 20, 30, 40]
numbers.clear()
print(numbers)
output:
[]متدهای مرتبط با رشته: split() و join()
متد split()
برای تبدیل یک رشته به لیست بر اساس یک جداکننده:
info = "Python - Django - Flask"
parts = info.split(" - ")
print(parts)
output:
['Python', 'Django', 'Flask']متد join()
برای ترکیب اعضای یک لیست از رشتهها به یک رشته واحد با جداکننده مشخص:
words = ['apple', 'banana', 'cherry']
sentence = " ".join(words)
print(sentence)
output:
apple banana cherry
langs = ['Python', 'Django', 'Flask']
joined = " - ".join(langs)
print(joined)
output:
Python - Django - Flask