لیست ها با استفاده از کورشه ([]) ایجاد می شوند، به مثال زیر دقت کنید.
thislist = ["apple", "banana", "cherry"]
print(thislist)
آیتم های لیست در پایتون (Python)
آیتم های لیست مرتب، قابل تغییر و مقادیر تکراری را مجاز می دانند.
آیتم های لیست دارای ایندکس (Index) هستند و مقدار ایندکس از 0 شروع می شود یعنی اولین آیتم ایندکس آن [0] است دومین آیتم دارای ایندکس [1] است و الی آخر.
مرتب شده
وقتی میگوییم که آیتم های لیست مرتب شده هستند به این معنی است که به همان ترتیبی که تعریف شده اند باقی می ماند و تغییر نمی کند.
اگر شما آیتم جدیدی را به لیست خود اضافه کنید، این آیتم در انتهای لیست قرار می گیرد.
نکته : لیست دارای متدهایی است که ترتیب آیتم ها را تغییر می دهد، اما به طور کلی ترتیب آن ها تغییر نمی کند.
تغییر پذیر
تغییر پذیر در آیتم های لیست به این معنا است که شما بعد از تعریف آیتم های لیست میتوانید آیتم جدیدی اضافه کنید، آیتمی را حذف کنید یا یک آیتم را تغییر دهید.
تکرار پذیر بودن آیتم ها
از آن جایی که آیتم ها ایندکس می شوند مقادیر آن ها می توانند تکراری باشند.
thislist = ["apple", "banana", "cherry", "apple", "cherry"]
print(thislist)
طول لیست ها
برای اطلاع از تعداد آیتم های یک لیست از تابع len استفاده میکنیم. این تابع تعداد آیتم های یک لیست را برای ما در خروجی برمیگرداند.
thislist = ["apple", "banana", "cherry"]
print(len(thislist))
انواع داده ها در آیتم های لیست
آیتم های یک لیست می توانند از هر نوع داده ای باشند و محدودیتی از این لحاظ ندارند.
در مثال زیر ما برای تعریف آیتم های لیست ها از سه نوع رشته ای، عددی و بولی استفاده کردیم.
list1 = ["apple", "banana", "cherry"]
list2 = [1, 5, 7, 9, 3]
list3 = [True, False, False]
یک لیست همچنین می تواند شامل ترکیبی از چند نوع داده باشد.
list1 = ["abc", 34, True, 40, "male"]
تابع type
از دیدگاه پایتون، لیست ها به عنوان اشیا با نوع داده ای لیست تعریف می شوند.
<class 'list'>
در مثال زیر نوع داده ای متغیر تعریف شده، یک شی با نوع داده ای لیست است.
mylist = ["apple", "banana", "cherry"]
print(type(mylist))
تابع سازنده list
شما همچنین می توانید برای ایجاد ایست جدید از تابع سازنده list استفاده کنید. حتما از دو پرانتز استفاده کنید.
thislist = list(("apple", "banana", "cherry")) # note the double round-brackets
print(thislist)
مجموعه های پایتون (آرایه ها)
در پایتون 4 نوع داده برای ذخیره مجموعه داده ها استفاده می شود.
- لیست ها که مرتب و تغییرپذیر و تعریف مقادیر تکراری در آن مجاز است.
- tuple که مرتب و غیر قابل تغییر و تعریف مقادیر تکراری در آن مجاز است.
- set که ترتیبی نیست و ایندکس نمی شود و مقادیر تکراری در آن مجاز نیست.
- فرهنگ لغت یا dictionary که مرتب است و قابل تغییر است اما مقادیر تکراری در آن مجاز نیست.
نکته : از نسخه 3.7 پایتون dictionary مرتب شده ارائه شد قبل تر از این نسخه ترتیبی نبود.
هنگام انتخاب نوع مجموعه دقت داشته باشید چون انتخاب نوع مجموعه مناسب باعث ایجاد کارایی و امنیت بیشتر می شود.
دسترسی به اعضای لیست در پایتون (Python)
آیتم های یک لیست ایندکس می شوند و شما با شماره ایندکس آن ها می توانید به آن ها دسترسی پیدا کنید.
در مثال زیر به ایندکس شماره 1 یعنی آیتم شماره 2 دسترسی پیدا کرده و آن را در خروجی نمایش داده است.
thislist = ["apple", "banana", "cherry"]
print(thislist[1])
نکته : ایندکس آیتم ها از 0 شروع می شوند.
ایندکس منفی
ایندکس منفی یعنی از انتهای لیست شروع کنید.
[1-] به آخرین آیتم اشاره دارد، [2-] به یکی قبل از آخر و همین طور به سمت اولین مقدار لیست شماره گذاری می شود.
در مثال زیر با مقدار ایندکس [1-] به آخرین مقدار لیست دسترسی پیدا کرده و آن را در خروجی چاپ کرده است.
thislist = ["apple", "banana", "cherry"]
print(thislist[-1])
محدوده ایندکس
شما می توانید با تعیین محل شروع و پایان ایندکس یک لیست، محدوده ایندکس در آن لیست را مشخص کنید.
هنگامی که محدوده را مشخص می کنید، مقدار بازگشتی یک لیست با مقادیر مشخص شده خواهد بود.
در مثال زیر آیتم های 3، 4 و 5 برگشت داده می شوند.
thislist = ["apple", "banana", "cherry", "orange", "kiwi", "melon", "mango"]
print(thislist[2:5])
نکته : در مثال بالا محدوده از ایندکس شماره 2 (خود دو شامل می شود) تا ایندکس شماره 5 (ایندکس شماره 5 شامل نمی شود) است.
یادآوری : ایندکس از 0 شروع می شود.
اگر مقدار شروع را مشخص نکنید محدوده از ابتدای لیست مشخص می شود.
thislist = ["apple", "banana", "cherry", "orange", "kiwi", "melon", "mango"]
print(thislist[:4])
اگر مقدار پایان را مشخص نکنید محدوده تا انتهای لیست در نظر گرفته می شود.
thislist = ["apple", "banana", "cherry", "orange", "kiwi", "melon", "mango"]
print(thislist[2:])
محدوده ایندکس منفی
اگر می خواهید ک بررسی را از انتهای لیست انجام دهید از ایندکس های منفی استفاده کنید.
در مثال زیر محدوده برگشتی لیست جدید از “Orange” (-4) شروع شده و تا “Mango” (که خود آن را شامل نمی شود) مشخص شده است.
thislist = ["apple", "banana", "cherry", "orange", "kiwi", "melon", "mango"]
print(thislist[-4:-1])
بررسی موجود بودن
برای تعیین وجود یک مقدار مشخص درون یک لیست از کلمه کلیدی in استفاده می کنیم.
در مثال زیر بررسی می کند که آیا مقدار “apple” درون لیست وجود دارد یا خیر. اگر مقدار وجود داشته باشد رشته مورد نظر را در خروجی چاپ می کند.
thislist = ["apple", "banana", "cherry"]
if "apple" in thislist:
print("Yes, 'apple' is in the fruits list")
تغییر آیتم های لیست در پایتون (Python)
برای تغییر مقدار یک آیتم خاص در لیست باید به شماره ایندکس آن آیتم دسترسی پیدا کنید و مقدار را تغییر دهید.
thislist = ["apple", "banana", "cherry"]
thislist[1] = "blackcurrant"
print(thislist)
تغییر محدوده ای از آیتم های لیست
برای تغییر مقدار آیتم ها در یک محدوده خاص، لیست جدیدی را تعریف کنید و آن را به محدوده آیتم های مورد نظر در لیست که می خواهید مقادیر آن را تغییر دهید اختصاص دهید.
مثال زیر این موضوع را به طور واضح نشان می دهد.
thislist = ["apple", "banana", "cherry", "orange", "kiwi", "mango"]
thislist[1:3] = ["blackcurrant", "watermelon"]
print(thislist)
در این مثال همانطور که می بینید مقادیر “blackcurrant” و “watermelon” جایگزین مقادیر “banana” و “cherry” شده اند.
اگر مقدار جایگزین بسشتر از محدوده مشخص شده باشد آنگاه به اندازه تعداد مشخص جایگزین انجام می شود و بقیه مقادیر بعد از جایگزین شده ها وارد و به لیست اضافه می شوند.
به مثال زیر دقت کنید
thislist = ["apple", "banana", "cherry"]
thislist[1:2] = ["blackcurrant", "watermelon"]
print(thislist)
توجه : وقتی تعداد موارد درج شده از تعداد موارد جایگزین بیشتر یا کمتر باشد، طول لیست تغییر می کند.
اگر مقدار جایگزین کمتر از محدوده مشخص شده باشد آنگاه موارد جایگزین انجام می شود و بقیه مقادیر از لیست حذف می شوند.
thislist = ["apple", "banana", "cherry"]
thislist[1:3] = ["watermelon"]
print(thislist)
درج آیتم
برای درج یک آیتم جدید در لیست بدون جایگزینی با آیتم های موجود در لیست می توانید از تابع insert استفاده کنید.
متد insert یک آیتم را در ایندکس مشخص شده در لیست قرار می دهد.
در مثال زیر مقدار “watermelon” به عنوان آیتم شماره 3 در لیست درج می شود.
thislist = ["apple", "banana", "cherry"]
thislist.insert(2, "watermelon")
print(thislist)
اضافه کردن به لیست در پایتون (Python)
در این قسمت می خواهیم متدهایی که برای اضافه کردن آیتم به یک لیست استفاده می شوند را به شما معرفی کنیم.
متد append
برای اضافه کردن آیتم به انتهای یک لیست از متد append استفاده می شود.
thislist = ["apple", "banana", "cherry"]
thislist.append("orange")
print(thislist)
متد insert
در بالا این متد را توضیح دادیم ک این متد برای اضافه کردن یک آیتم جدید با ایندکس مشخص شده استفاده می شود.
در مثال زیر یک متد جدید به عنوان دومین آیتم لیست اضافه می شود.
thislist = ["apple", "banana", "cherry"]
thislist.insert(1, "orange")
print(thislist)
نکته : دقت کنید که در مثال بالا لیست اکنون شامل 4 آیتم می باشد .
متد extend
برای افزودن یک لیست به لیست دیگر از متد extend استفاده کنید.
در مثال زیر تمام آیتم های لیست tropical به انتهای لیست thislist اضافه می شوند.
thislist = ["apple", "banana", "cherry"]
tropical = ["mango", "pineapple", "papaya"]
thislist.extend(tropical)
print(thislist)
در متد extend نیاز نیست که حتما برای اضافه کردن از لیست ها استفاده کنید، شما در اصل می توانید هر شی قابل پیمایش (tuple, set, dictionary) را به لیست خود اضافه کنید.
در مثال زیر یک متغیر از نوع tuple به انتهای یک لیست اضافه شده است.
thislist = ["apple", "banana", "cherry"]
thistuple = ("kiwi", "orange")
thislist.extend(thistuple)
print(thislist)
حذف کردن آیتم های لیست در پایتون (Python)
در این قسمت می خواهیم متدهایی که برای حذف کردن آیتم از یک لیست استفاده می شوند را به شما معرفی کنیم.
متد remove
این متد آیتم مشخص شده را از لیست حذف می کند.
در مثال زیر آیتم “banana” را از لیست حذف می کند.
thislist = ["apple", "banana", "cherry"]
thislist.remove("banana")
print(thislist)
متد pop
این متد ایندکس مشخص شده را از لیست حذف می کند.
در مثال زیر آیتم دوم را از لیست حذف می کند.
thislist = ["apple", "banana", "cherry"]
thislist.pop(1)
print(thislist)
در این متد اگر ایندکس را مشخص نکنید از آیتم آخر لیست حذف خواهد کرد.
در مثال زیر آخرین آیتم لیست حذف خواهد شد.
thislist = ["apple", "banana", "cherry"]
thislist.pop()
print(thislist)
کلمه کلیدی del
کلمه کلیدی del نیز باعث حذف ایندکس مشخص شده در لیست می شود.
در مثال زیر اولین آیتم لیست حذف شده است.
thislist = ["apple", "banana", "cherry"]
del thislist[0]
print(thislist)
کلمه کلیدی del همچنین می تواند لیست را به طور کامل حذف کند.
در مثال زیر کل لیست حذف شده است.
thislist = ["apple", "banana", "cherry"]
del thislist
متد clear
این متد باعث خالی شدن لیست می شود.
در این متد فقط محتوای لیست حذف می شوند ولی خود لیست همچنان وجود دارد.
thislist = ["apple", "banana", "cherry"]
thislist.clear()
print(thislist)
پیمایش لیست ها با حلقه ها در پایتون (Python)
می توان با استفاده از حلقه ها تمام آیتم های لیست را پیمایش کرد.
حلقه for
در مثال زیر با استفاده از حلقه for همه آیتم های لیست در خروجی چاپ می شوند
thislist = ["apple", "banana", "cherry"]
for x in thislist:
print(x)
در مقالات آینده با حلقه های for در پایتون بیشتر آشنا می شوید.
شما همچنین می توانید آیتم های لیست را با شماره ایندکس آن ها در حلقه for پیمایش کنید.
برای پیمایش بهتر می توانید از توابع range و len استفاده کنید.
در مثال زیر همه آیتم های لیست را با اشاره به ایندکس آن ها در خروجی چاپ می کند.
thislist = ["apple", "banana", "cherry"]
for i in range(len(thislist)):
print(thislist[i])
در مثال بالا لیست قابل پیمایش ایجاد شده [0, 1, 2] است.
حلقه while
همچنین می توانیم با حلقه while تمام آیتم های لیست را پیمایش کنیم.
از تابع len برای تعیین طول لیست استفاده می کنیم، از مقدار 0 شروع می کنیم و سپس با مراجعه به ایندکس آنها لیست خود را پیمایش می کنیم.
به یاد داشته باشید بعد از هر بار تکرار شماره ایندکس را یکی افزایش دهید.
در مثال زیر از حلقه while برای پیمایش لیست استفاده کرده ایم، متغیر i را تعریف کردیم و با 0 مقدار دهی کردیم که پیمایش از ایندکس اولین آیتم (ایندکس شماره 0) شروع شود و بعد از هر بار تکرار شماره ایندکس (متغیر i) یکی افزایش می یابد.
thislist = ["apple", "banana", "cherry"]
i = 0
while i < len(thislist):
print(thislist[i])
i = i + 1
در مقالات آینده با حلقه های while در پایتون بیشتر آشنا می شوید.
جستجو و پیمایش یک لیست با استفاده از list Comperhension
List Comperhension کوتاه ترین راه برای پیمایش و جستجوی لیست ها را ارائه می دهد.
در مثال زیریک for کوتاه شده برای پیمایش و چاپ آیتم های یک لیست با استفاده از list Comperhension را مشاهده می کنید.
thislist = ["apple", "banana", "cherry"]
[print(x) for x in thislist]
در ادامه بیشتر با روش list comprehension آشنا می شوید.
روش List Comperhension در پایتون (Python)
وقتی شما می خواهید یک لیست جدید بر اساس یک لیست موجود ایجاد کنید، list Comperhension یک روش کوتاه تر به شما ارائه می دهد.
مثال: شما می خواهید بر اساس لیست fruits یک لیست جدید ایجاد کنید که فقط آیتم هایی ک شامل حرف “a” باشند انتخاب شوند و در لیست جدید قرار گیرند.
بدون روش list Comperhension شما باید یک حلقه for با یک عبارت شرطی در داخل حلقه بنویسید.
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = []
for x in fruits:
if "a" in x:
newlist.append(x)
print(newlist)
ولی وقتی شما از روش list Comperhension استفاده کنید می توانید این کار را در یک خط کد خلاصه کنید.
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = [x for x in fruits if "a" in x]
print(newlist)
سینتکس list Comperhension
newlist = [expression for item in iterable if condition == True]
در این روش مقدار برگشتی یک لیست جدید است و لیست قدیمی بدون تغییر باقی خواهد ماند.
شرط در list Comperhension
مقادیر تنها در صورتی برگشت داده می شوند که مقدار شرط true باشد.
در مثال زیر تمام مقادیر به جز “apple” در یک لیست جدید برگشت داده می شوند و لیست قدیمی بدون تغییر باقی می ماند.
newlist = [x for x in fruits if x != "apple"]
نکته : شرط اختیاری است و می توانیم آن را حذف کنیم، در این صورت تمام مقادیر در لیست جدید دیگری برگشت داده می شوند.
در مثال زیر همان مثال بالا را بدون شرط برای شما آورده ایم.
newlist = [x for x in fruits]
مقادیر قابل پیمایش در روش list Comperhension
مقادیر قابل پیمایش می تواند شامل هر شی قابل پیمایشی باشد، مانند : لیست ها ، tuple ها، set ها و غیره.
شما می توانید از تابع range برای ایجاد قابلیت پیمایش استفاده کنید.
در مثال زیر سه از تابع range(10) استفاده شده و لیست 0 تا 10 را در خروجی چاپ کرده است.
newlist = [x for x in range(10)]
یک مثال مشابه ای بار با یک عبارت شرطی :
در این مثال فقط اعدادی به لیست اضافه می شوند که کوچکتر از عدد 5 باشند.
newlist = [x for x in range(10) if x < 5]
عبارت(experssion) در روش list Comperhension
experssion همان آیتم فعلی در لیست قابل پیمایش است اما قبل از ورود مقدار به لیست می توانید آن را تغییر بدهید.
در مثال زیر آیتم ها قبل از اضافه شدن به لیست جدید به حروف بزرگ تبدیل می شوند .
newlist = [x.upper() for x in fruits]
می توانید نتیجه را هر طور که دوست دارید و مد نظر شماست تغییر دهید و بعد به لیست جدید اضافه کنید.
در مثال زیر تمام مقادیر به مقدار “hello” تبدیل می شوند و بعد به لیست جدید اضافه می شوند.
newlist = ['hello' for x in fruits]
Expression می تواند شامل شرایطی باشد، اما نه مانند شرایط فیلتر کردن مقدار، بلکه به عنوان تغییر دهنده مقدار برای اضافه کردن به لیست.
در مثال زیر به جای مقدار “banana” مقدار “orange” را در لیست جدید قرار می دهد.
newlist = [x if x != "banana" else "orange" for x in fruits]
در عبارت بالا می گوید که "اگر مقدار فعلی کلمه “banana” نیست که هیچی، اما اگر “banana” است آن را به “orange” تغییر بده".
مرتب کردن لیست ها در پایتون (Python)
بعضی مواقع ما نیاز داریم که لیست را مرتب کنیم، برای مرتب کردن لیست توابعی وجود دارند که در این قسمت آن ها را به شما معرفی خواهیم کرد.
چند نوع مرتب سازی داریم که در زیر به بررسی آن ها می پردازیم.
مرتب سازی لیست از نظر عددی
لیست ها دارای متدی به نام sort هستند که مقادیر لیست را از نظر عددی به صورت صعودی مرتب سازی می کنند.
در مثال زیر لیست بر اساس حروف الفبا مرتب می شوند.
thislist = ["orange", "mango", "kiwi", "pineapple", "banana"]
thislist.sort()
print(thislist)
در مثال زیر لیست بر اساس عددی مرتب می شوند.
thislist = [100, 50, 65, 82, 23]
thislist.sort()
print(thislist)
مرتب سازی نزولی
برای مرتب سازی نزولی در تابع sort از آرگومان کلمه کلیدی reverse با مقدار true استفاده می کنیم.
مرتب سازی نزولی بر اساس حروف الفبا
thislist = ["orange", "mango", "kiwi", "pineapple", "banana"]
thislist.sort(reverse = True)
print(thislist)
مرتب سازی نزولی بر اساس مقادیر عددی
thislist = [100, 50, 65, 82, 23]
thislist.sort(reverse = True)
print(thislist)
تابع سفارشی کردن مرتب سازی
شما همچنین می توانید مرتب سازی را بر اساس تابع مورد نظر خودتون با استفاده از آرگومان کلمه کلیدی key و با مقدار نام تابع، انجام دهید.
این تابع شماره ای را برای مرتب سازی لیست (از کمترین عدد) استفاده می کند.
در مثال زیر لیست را بر اساس نزدیک بودن به عدد 50 مرتب می کند.
def myfunc(n):
return abs(n - 50)
thislist = [100, 50, 65, 82, 23]
thislist.sort(key = myfunc)
print(thislist)
مرتب سازی بر اساس حساس نبودن به حروف بزرگ و کوچک
به طور پیش فرض متد sort به حروف بزرگ و کوچک حساس است و حروف بزرگ قبل از حروف کوچک قرار می گیرند.
مرتب سازی بر اساس حساس بودن به حروف بزرگ و کوچک می تواند نتایج غیر منتظره ای داشته باشد.
به مثال زیر دقت کنید.
thislist = ["banana", "Orange", "Kiwi", "cherry"]
thislist.sort()
print(thislist)
در پایتون خوشبختانه هنگام مرتب سازی لیست می توانیم از توابع داخلی به عنوان توابع کلیدی استفاده کنیم.
بنابراین اگر بخواهیم مرتب سازی را بر اساس حساس نبودن به حروف بزرگ و کوچک انجام دهیم، می توانیم از تابع کلیدی str.lower به عنوان تابع کلیدی استفاده کنیم.
thislist = ["banana", "Orange", "Kiwi", "cherry"]
thislist.sort(key = str.lower)
print(thislist)
معکوس کردن ترتیب لیست
اگر بخواهید ترتیب یک لیست را بدون در نظر گرفتن حروف الفبا معکوس کنید، چه می کنید؟
متد reverse ترتیب فعلی لیست را معکوس می کند.
در مثال زیر ترتیب آیتم های لیست معکوس می شوند.
thislist = ["banana", "Orange", "Kiwi", "cherry"]
thislist.reverse()
print(thislist)
کپی کردن لیست در پایتون (Python)
شما در پایتون نمیتوانید به راحتی با نوشتن list1 = list2 یک لیست را کپی کنید برای اینکه list2 فقط یک مرجع از list1 است و تغییرات ایجاد شده در list1 باعث می شود که به طور خودکار این تغییرات در list2 هم ایجاد شوند.
روش هایی برای تهیه کپی از یک لیست وجود دارد، یکی از این روش ها استفاده از متد داخلی copy است.
thislist = ["apple", "banana", "cherry"]
mylist = thislist.copy()
print(mylist)
یکی دیگر از راه های ایجاد یک کپی از لیست استفاده از متد داخلی list است.
thislist = ["apple", "banana", "cherry"]
mylist = list(thislist)
print(mylist)
ادغام لیست ها در پایتون (Python)
روش های مختلفی برای پیوستن و یا ادغام دو یا چند لیست در پایتون وجود دارد.
یکی از ساده ترین روش ها استفاده از عملگر جمع (+) بین دو لیست است.
list1 = ["a", "b", "c"]
list2 = [1, 2, 3]
list3 = list1 + list2
print(list3)
روش دوم اضافه کردن تک تک آیتم های لیست اول به لیست دوم است.
در مثال زیر با استفاده از حلقه for و متد append تمام آیتم های لیست 2 به لیست 1 اضافه می شوند.
list1 = ["a", "b" , "c"]
list2 = [1, 2, 3]
for x in list2:
list1.append(x)
print(list1)
یا می توانید از متد extend استفاده کنید. هدف این است که آیتم های یک لیست به لیست دیگر اضافه شوند.
در مثال زیر با متد extend آیتم های لیست 2 به انتهای لیست 1 اضافه می شوند.
list1 = ["a", "b" , "c"]
list2 = [1, 2, 3]
list1.extend(list2)
print(list1)
متد های لیست در پایتون (Python)
در جدول زیر به طور خلاصه کارکرد همه متد های مورد استفاده در لیست ها را که در بالا تک تک آن ها را توضیح دادیم، برای شما آورده ایم.
متد | توضیحات |
---|---|
Append | آیتم ها را به انتهای لیست اضافه می کند |
Clear | تمام آیتم های لیست را حذف می کند |
Copy | یک کپی از لیست مورد نظر برگشت می دهد |
Count | تعدادی عناصر را با مقدار مشخص برمیگرداند |
Extend | اضافه کردن آیتم هایی از یک لیست (هر شی قابل پیمایش) به انتهای لیست فعلی |
Index | ایندکس عنصر اول را با مقدار مشخص شده برمیگرداند |
Insert | یک آیتم را در ایندکس مشخص شده در لیست اضافه می کند |
Pop | آیتم با ایندکس مشخص شده را از لیست حذف می کند |
Remove | آیتم با مقدار مشخص شده را حذف می کند |
Reverse | ترتیب لیست را معکوس می کند |
Sort | لیست را مرتب می کند. |