آموزش لیست در پایتون
منبع: https://rasanika.com
تعریف یک لیست در پایتون:
mylist = ["apple", "banana", "cherry"]
List
لیست ها برای ذخیره چند آیتم در یک متغیر استفاده می شوند.
لیست ها یکی از 4 نوع داده داخلی در پایتون هستند که برای ذخیره و کار با آرایه ها استفاده می شوند، 3 نوع دیگر عبارتند از Tuple ، Set و Dictionary که کاربرد های متفاوتی دارند.
لیست ها با استفاده از براکت []
ایجاد می شوند:
مثال
ایجاد یک لیست:
thislist = ["apple", "banana", "cherry"]
print(thislist)
آیتم های لیست
آیتم های لیست دارای ترتیب هستند، قابل تغییر اند و موارد تکراری در آنها مجاز است.
آیتم های لیست از طریق شماره اندیس یا نمایه قابل دسترسی هستند، مورد اول دارای اندیس [0]
، مورد دوم دارای اندیس [1]
و غیره است.
مرتبسازی و ترتیب
وقتی می گوییم لیست ها مرتب شده اند به این معنی است که آیتم ها دارای ترتیب مشخصی هستند و این ترتیب تغییر نمی کند.
اگر موارد جدیدی را به لیست اضافه کنید، موارد جدید در انتهای لیست قرار خواهند گرفت.
نکته: امکان تغییر ترتیب آیتم ها از طریق متد های لیست وجود دارد، ولی در کل ترتیب آیتم ها حفظ می شود.
لیست قابل تغییر است، به این معنی که ما می توانیم بعد از تعریف لیست، آیتم های آن را حذف، اضافه و یا بروز کنیم.
آیتم های تکراری
لیست ها می توانند مواردی با مقدار یکسان داشته باشند:
مثال
thislist = ["apple", "banana", "cherry", "apple", "cherry"]
print(thislist)
طول لیست
برای تعیین تعداد آیتم های یک لیست، از تابع len()
استفاده کنید:
مثال
چاپ تعداد موارد موجود در لیست:
thislist = ["apple", "banana", "cherry"]
print(len(thislist))
نوع داده آیتم ها
یک لیست می تواند از آیتم هایی با نوع های مختلف تشکیل شده باشد:
مثال
انواع داده های رشته ای، int و بولی:
list1 = ["apple", "banana", "cherry"]
list2 = [1, 5, 7, 9, 3]
list3 = [True, False, False]
یک لیست می تواند شامل انواع داده های مختلف باشد:
مثال
یک لیست دارای ترکیبی از رشته ها، اعداد صحیح و مقادیر بولی:
list1 = ["abc", 34, True, 40, "male"]
تابع type()
از دید پایتون، لیست ها به عنوان اشیایی با نوع داده "list" تعریف می شوند:
<class 'list'>
مثال
نوع داده یک لیست را چاپ کنید:
mylist = ["apple", "banana", "cherry"]
print(type(mylist))
تابع list()
همچنین می توان هنگام ایجاد لیست جدید از سازنده list()
استفاده کرد.
مثال
استفاده از list()
برای ایجاد لیست:
thislist = list(("apple", "banana", "cherry")) # note the double round-brackets
print(thislist)
آرایهها (دادههای گروهی) در پایتون
چهار نوع داده برای کار با مجموعه ای از داده ها در زبان برنامه نویسی پایتون وجود دارد:
لیست مجموعه ای مرتب و قابل تغییر است. اعضای تکراری مجاز است.
تاپل مجموعه ای مرتب و غیرقابل تغییر است. اعضای تکراری مجاز است.
ست مجموعه ای نامرتب و غیرقابل تغییر* و ایندکس نشده است. بدون عضو تکراری.
دیکشنری مجموعه ای مرتب** و قابل تغییر است. بدون عضو تکراری.
آیتم های Set غیر قابل تغییر هستند، اما هر زمان که بخواهید می توانید یک آیتم را حذف و/یا اضافه کنید.
از نسخه 3.7 پایتون، دیکشنری ها دارای ترتیب هستند. در پایتون 3.6 و نسخه های قبلی، دیکشنری ها نامرتب هستند.
هنگام انتخاب نوع آرایه، درک ویژگی های آن بسیار مفید است. انتخاب نوع درست برای یک مجموعه داده می تواند باعث افزایش کارایی و امنیت شود.
دسترسی به آیتم ها
آیتم های لیست نمایه (ایندکس) شده اند و با مراجعه به شماره اندیس هر آیتم می توانید به آن دسترسی داشته باشید:
مثال
دومین آیتم از لیست را چاپ کنید:
thislist = ["apple", "banana", "cherry"]
print(thislist[1])
توجه: اولین مورد دارای اندیس 0 است.
نمایه سازی منفی
نمایه سازی منفی یعنی شروع از انتهای لیست
-1
به آخرین آیتم اشاره دارد، -2
به دومین آیتم از آخر اشاره دارد و …
مثال
آخرین آیتم لیست را چاپ کنید:
thislist = ["apple", "banana", "cherry"]
print(thislist[-1])
محدوده اندیس ها
شما می توانید محدوده ای از ایندکس ها را با تعیین مکان شروع و پایان محدوده مشخص کنید.
هنگام تعیین محدوده، مقدار بازگشتی، یک لیست جدید با آیتم های مشخص شده (طبق محدوده) خواهد بود.
مثال
آیتم سوم، چهارم و پنجم را برگردانید:
thislist = ["apple", "banana", "cherry", "orange", "kiwi", "melon", "mango"]
print(thislist[2:5])
در مثال بالا جستجو از نمایه 2 (شامل آن) شروع می شود و به نمایه 5 (بدون آن) پایان می یابد.
به یاد داشته باشید که اولین آیتم دارای شاخص 0 است.
با ذکر نکردن مقدار شروع، محدوده از اولین آیتم شروع می شود:
مثال
این مثال آیتم ها را از ابتدا به "kiwi" باز می گرداند، اما شامل "kiwi" نمی شود:
thislist = ["apple", "banana", "cherry", "orange", "kiwi", "melon", "mango"]
print(thislist[:4])
با حذف مقدار پایانی، محدوده به انتهای لیست می رود:
مثال
این مثال موارد را از "cherry" به انتها برمی گرداند:
thislist = ["apple", "banana", "cherry", "orange", "kiwi", "melon", "mango"]
print(thislist[2:])
محدوده اندیس های منفی
اگر می خواهید جستجو را از انتهای لیست شروع کنید، از اندیس های منفی استفاده کنید:
مثال
این مثال آیتم ها را از orange به 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")
تغییر مقدار یک آیتم
برای تغییر مقدار یک آیتم خاص، به شماره اندیس آن مراجعه کنید:
مثال
آیتم دوم را تغییر دهید:
thislist = ["apple", "banana", "cherry"]
thislist[1] = "blackcurrant"
print(thislist)
محدوده ای از آیتم ها را تغییر دهید
برای تغییر مقدار آیتم ها در یک محدوده خاص، لیستی با مقادیر جدید تعریف کرده و به آن محدوده اختصاص دهید:
مثال
مقادیر "banana" و "cherry" را با مقادیر "blackcurrant" و "watermelon" جایگزین کنید:
thislist = ["apple", "banana", "cherry", "orange", "kiwi", "mango"]
thislist[1:3] = ["blackcurrant", "watermelon"]
print(thislist)
اگر موارد بیشتری را نسبت به محدوده خود وارد کنید، موارد جدید در جایی که مشخص کردهاید درج میشوند و موارد باقیمانده بر این اساس انتقال داده می شوند.
مثال
مقدار دوم را با دو مقدار جدید جایگزین کنید:
thislist = ["apple", "banana", "cherry"]
thislist[1:2] = ["blackcurrant", "watermelon"]
print(thislist)
توجه: زمانی که تعداد موارد درج شده با تعداد موارد جایگزین مطابقت نداشته باشد طول لیست تغییر می کند.
اگر کمتر از مواردی که جایگزین کردهاید درج کنید، موارد جدید در جایی که مشخص کردهاید درج میشوند و موارد باقیمانده بر این اساس انتقال داده می شوند:
مثال
مقدار دوم و سوم را با فقط یک مقدار جایگزین کنید:
thislist = ["apple", "banana", "cherry"]
thislist[1:3] = ["watermelon"]
print(thislist)
افزودن آیتم به لیست
برای افزودن یک آیتم به انتهای لیست، از متد append()
استفاده کنید :
مثال
thislist = ["apple", "banana", "cherry"]
thislist.append("orange")
print(thislist)
درج آیتم
برای درج یک آیتم در یک نمایه مشخص، از insert()
استفاده کنید.
insert()
یک آیتم را در اندیس مشخص شده درج می کند:
مثال
یک آیتم را در موقعیت دوم درج کنید:
thislist = ["apple", "banana", "cherry"]
thislist.insert(1, "orange")
print(thislist)
توجه: در نتیجه مثال بالا، لیست اکنون شامل 4 مورد خواهد بود.
گسترش لیست
برای الحاق عناصر از یک لیست دیگر به لیست فعلی، از extend()
استفاده کنید.
مثال
اضافه کردن عناصر tropical
به thislist
:
thislist = ["apple", "banana", "cherry"]
tropical = ["mango", "pineapple", "papaya"]
thislist.extend(tropical)
print(thislist)
عناصر به انتهای لیست اضافه خواهند شد.
هر تکرار شونده ای را اضافه کنید
به متد extend()
لازم نیست حتما یک لیست بدهید، می توانید از هر شیء تکرار شونده (تاپل ها، مجموعه ها، دیکشنری ها و غیره) استفاده کنید.
مثال
عناصر یک تاپل را به لیست اضافه کنید:
thislist = ["apple", "banana", "cherry"]
thistuple = ("kiwi", "orange")
thislist.extend(thistuple)
print(thislist)
حذف آیتم از لیست
حذف آیتم با مقدار مشخص
متد remove()
یک آیتم با مقدار مشخص شده را حذف می کند.
مثال
حذف "banana":
thislist = ["apple", "banana", "cherry"]
thislist.remove("banana")
print(thislist)
اگر بیش از یک مورد با مقدار مشخص شده وجود داشته باشد، remove()
اولین مورد را حذف می کند:
مثال
اولین آیتم با مقدار "banana" را حذف کنید:
thislist = ["apple", "banana", "cherry", "banana", "kiwi"]
thislist.remove("banana")
print(thislist)
حذف آیتم با اندیس مشخص
متدpop()
اندیس مشخص شده را حذف می کند.
مثال
مورد دوم را حذف کنید:
thislist = ["apple", "banana", "cherry"]
thislist.pop(1)
print(thislist)
اگر اندیس را مشخص نکنید، pop()
آخرین مورد را حذف می کند.
مثال
آخرین مورد را حذف کنید:
thislist = ["apple", "banana", "cherry"]
thislist.pop()
print(thislist)
کلیدواژه 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)
حلقه روی آیتم های لیست
با استفاده از یک for
می توانید روی آیتم های یک لیست حلقه بزنید:
مثال
تمام موارد موجود در لیست را تک تک چاپ کنید:
thislist = ["apple", "banana", "cherry"]
for x in thislist:
print(x)
در پست های بعدی با حلقه های for بیشتر آشنا خواهید شد.
حلقه روی اندیس های لیست
با مراجعه به شماره اندیس های یک لیست، می توانید روی اندیس های آن حلقه بزنید.
از ترکیب توابع range()
و len()
برای ایجاد یک تکرار شونده مناسب استفاده کنید.
مثال
همه موارد را با مراجعه به شماره اندیس آنها چاپ کنید:
thislist = ["apple", "banana", "cherry"]
for i in range(len(thislist)):
print(thislist[i])
تکرار شونده ایجاد شده در مثال بالا [0, 1, 2]
است.
استفاده از حلقه while
با استفاده از while
هم می توانید روی آیتم های لیست حلقه بزنید.
از تابع len()
برای به دست آوردن طول لیست استفاده کنید، سپس از 0 شروع کرده و با مراجعه به اندیس های لیست، روی مقادیر آن حلقه بزنید.
به یاد داشته باشید که پس از هر بار تکرار، اندیس را یک بار افزایش دهید.
مثال
thislist = ["apple", "banana", "cherry"]
i = 0
while i < len(thislist):
print(thislist[i])
i = i + 1
در پست های بعدی با حلقه های while بیشتر آشنا خواهید شد.
حلقه با استفاده از Comprehension
کامپرهنشن کوتاه ترین روش برای حلقه زدن روی لیست ها را فراهم میکند:
مثال
thislist = ["apple", "banana", "cherry"]
[print(x) for x in thislist]
List Comprehension
هنگامی که می خواهید یک لیست جدید بر اساس مقادیر یک لیست دیگر ایجاد کنید، کامپرهنشن، روش کوتاه تری ارائه می دهد.
مثال:
بر اساس لیستی از میوه ها، شما یک لیست جدید می خواهید که فقط شامل میوه هایی با حرف "a" در نام باشد.
بدون Comprehension، باید یک حلقه for
با یک شرط if داخلش بنویسید:
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = []
for x in fruits:
if "a" in x:
newlist.append(x)
print(newlist)
با Comprehension می توانید این کارها را تنها با یک خط کد انجام دهید:
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = [x for x in fruits if "a" in x]
print(newlist)
سینتکس
newlist = [expression for item in iterable if condition == True]
مقدار بازگشتی یک لیست جدید است و لیست قدیمی را تغییر نمی دهد.
شرط
این شرط (condition) مانند فیلتری روی مقادیر لیست عمل می کند.
مثال
فقط مواردی را بپذیرید که "apple" نیستند:
newlist = [x for x in fruits if x != "apple"]
شرط موردنظر:
if x != "apple"
برای همه عناصر به غیر از "apple" مقدار True
باز می گردد و باعث می شود لیست جدید شامل همه میوه ها به جز "apple" باشد.
شرط اختیاری است و می توان آن را حذف کرد:
مثال
newlist = [x for x in fruits]
تکرار شونده
تکرار شونده (iterable) می تواند هر شیء قابل تکراری باشد، مانند لیست، تاپل، مجموعه و غیره.
مثال
می توانید از range()
برای ایجاد یک تکرار شونده مناسب استفاده کنید:
newlist = [x for x in range(10)]
مثال مشابه، اما با یک شرط: (فقط اعداد کمتر از 5 را بپذیرید)
newlist = [x for x in range(10) if x < 5]
اکسپرشن
مقادیر موجود در لیست جدید را به حروف بزرگ تبدیل کنید:
newlist = [x.upper() for x in fruits]
شما می توانید نتیجه را به هر چیزی که دوست دارید تغییر دهید:
مثال
همه مقادیر موجود در لیست جدید را به "hello" تبدیل کنید:
newlist = ['hello' for x in fruits]
اکسپرشن نیر می تواند شامل شرایطی باشد، البته نه مثل یک فیلتر، بلکه به عنوان راهی برای تغییر نتیجه:
مثال
به جای "banana" مقدار "orange" را برگردانید:
newlist = [x if x != "banana" else "orange" for x in fruits]
اکسپرشن در مثال بالا می گوید:
"اگر آیتم موردنظر banana نباشد خود آیتم و در غیر اینصورت orange را برگردان"
مرتب سازی لیست
مرتب سازی به صورت الفبایی
لیست ها دارای متد sort()
هستند که به طور پیش فرض لیست را به صورت الفبایی و صعودی مرتب می کند:
مثال
لیست را بر اساس حروف الفبا مرتب کنید:
thislist = ["orange", "mango", "kiwi", "pineapple", "banana"]
thislist.sort()
print(thislist)
مثال
لیست را به صورت عددی مرتب کنید:
thislist = [100, 50, 65, 82, 23]
thislist.sort()
print(thislist)
مرتب سازی نزولی
برای مرتب سازی نزولی، از ورودی 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 = my_function
استفاده نمایید.
این تابع عددی را برمیگرداند که برای مرتبسازی لیست استفاده میشود (ابتدا کمترین عدد):
مثال
فهرست را بر اساس فاصله از عدد 50 مرتب کنید:
def myfunc(n):
return abs(n - 50)
thislist = [100, 50, 65, 82, 23]
thislist.sort(key = myfunc)
print(thislist)
مرتب سازی Case Insensitive
به طور پیش فرض متد sort()
به حروف بزرگ و کوچک حساس است و در نتیجه همه حروف بزرگ قبل از حروف کوچک مرتب می شوند:
مثال
مرتب سازی حساس به حروف می تواند نتیجه غیرمنتظره ای داشته باشد:
thislist = ["banana", "Orange", "Kiwi", "cherry"]
thislist.sort()
print(thislist)
خوشبختانه ما می توانیم از توابع داخلی به عنوان key
هنگام مرتب سازی لیست استفاده کنیم.
بنابراین اگر تابع مرتبسازی غیر حساس به حروف بزرگ و کوچک میخواهید، از str.lower
به عنوان key استفاده کنید:
مثال
یک مرتب سازی بدون حساس به حروف بزرگ و کوچک از لیست انجام دهید:
thislist = ["banana", "Orange", "Kiwi", "cherry"]
thislist.sort(key = str.lower)
print(thislist)
به صورت برعکس
اگر بخواهید بدون توجه به حروف الفبا، ترتیب فهرست را برعکس کنید، چه؟
متد reverse()
ترتیب مرتب سازی فعلی عناصر را معکوس می کند.
مثال
ترتیب موارد فهرست را معکوس کنید:
thislist = ["banana", "Orange", "Kiwi", "cherry"]
thislist.reverse()
print(thislist)
کپی کردن لیست
شما نمی توانید یک لیست را صرفا با تایپ کردن list2 = list1
کپی کنید، چون با اینکار list2
فقط یک رفرنس به list1
می شود و هر تغییری در هر کدام از آن ها بدهید، روی دیگری نیز اعمال می شود.
راه هایی برای کپی کردن وجود دارد، یکی از راه ها استفاده از متد copy()
است.
مثال
یک کپی از یک لیست با متد copy()
ایجاد کنید:
thislist = ["apple", "banana", "cherry"]
mylist = thislist.copy()
print(mylist)
روش دیگر برای کپی کردن، استفاده از تابع داخلی list()
است
مثال
یک کپی از یک لیست با تابع list()
ایجاد کنید:
thislist = ["apple", "banana", "cherry"]
mylist = list(thislist)
print(mylist)
ترکیب (Join) لیست ها
چندین راه برای پیوستن یا الحاق دو یا چند لیست در پایتون وجود دارد.
یکی از ساده ترین راه ها استفاده از عملگر +
است.
مثال
list1 = ["a", "b", "c"]
list2 = [1, 2, 3]
list3 = list1 + list2
print(list3)
راه دیگر برای پیوند دو لیست به یکدیگر، اضافه کردن همه موارد از list2 به list1 است:
مثال
list1 = ["a", "b" , "c"]
list2 = [1, 2, 3]
for x in list2:
list1.append(x)
print(list1)
یا می توانید از extend()
نیز استفاده کنید که در آن هدف اضافه کردن عناصر از یک لیست به لیست دیگر است:
مثال
list1 = ["a", "b" , "c"]
list2 = [1, 2, 3]
list1.extend(list2)
print(list1)
متد های داخلی لیست
پایتون مجموعه ای از متدهای داخلی دارد که می توانید از آنها روی هر لیست استفاده کنید:
Method | Description |
append() | Adds an element at the end of the list |
clear() | Removes all the elements from the list |
copy() | Returns a copy of the list |
count() | Returns the number of elements with the specified value |
extend() | Add the elements of a list (or any iterable), to the end of the current list |
index() | Returns the index of the first element with the specified value |
insert() | Adds an element at the specified position |
pop() | Removes the element at the specified position |
remove() | Removes the item with the specified value |
reverse() | Reverses the order of the list |
sort() | Sorts the list |