لیست ها در پایتون
آرایه ها در پایتون به صورت صریح معرفی نشدهاند.دادههایی که به صورت مجموعهای از دادهها تعریف و استفاده میشوند (مثل آرایهها) در پایتون چهار نوع میباشند که در زیر لیست شدهاند. در این نوشته نوع دادهی لیست و توابع آن را در پایتون را بررسی و کاربرد آنها را توضیح میدهیم.
- لیست ها در پایتون مجموعهای از دادههای مرتب هستند. در این نوع داده اعضای تکراری مجاز است. اعضای لیست در پایتون با استفاده از اندیس قابل دستیابی و تغییر است.
- چند تایی مرتب در پایتون یک مجموعه از دادههای مرتب و غیر قابل تغییر است.در چندتایی و زوج مرتب در پایتون تکرار اعضا مجاز است.
- مجموعه ها در پایتون مجموعهای از داده های نا مرتب است که اعضای این مجموعه با استفاده از اندیس قابل دسترسی نمیباشد.اعضای تکراری در مجموعه ها مجاز نمیباشد.
- دیکشنری ها در پایتون مجموعهای از داده های نامرتب یا غیر مرتب است که اعضای آن قابل تغییر است و هر عضو با استفاده از اندیس قابل دستیابی است.
لیستها در پایتون
همانطور که در بالا به آن اشاره کردیم لیستها یک مجموعهی مرتب و قابل تغییر از دادههاست.لیست ها در پایتون بین براکت قرار میگیرند. در مثال زیر یک لیست در پایتون تعریف و آن را با استفاده از تابع print چاپ کردیم.
┌─[trueans@parrot]─[~]
└──╼ $python3
Python 3.8.3 (default, May 14 2020, 11:03:12)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> mylist=['banana','apple',1,'k']
>>> print(mylist)
['banana', 'apple', 1, 'k']
>>> print(mylist[0])
banana
>>> print(mylist[1])
apple
>>> print(mylist[4])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
>>> mylist[2]='orang'
>>> print(mylist)
['banana', 'apple', 'orang', 'k']
با توجه به مثال بالا من چند نکته را میتوانم استنباط کنم اگر نکات دیگری نیز به ذهن شما خطور میکند که من متوجه نشدم در قسمت نظرات با من در میان بگذارید.
- با استفاده از اندیس هر عضو لیست قابل دستیابی است.
- اندیسها در پایتون از صفر شروع میشود.
- نام لیست به کل لیست اشاره میکند یعنی با استفاده از نام لیست میتوان آن را چاپ و یا اعمال دیگری را روی لیست انجام داد.
- اگر بخواهیم اندیسی را چاپ کنیم که بزرگتر از آخرین اندیس موجود باشد خطا دریافت میکنیم.
- اعضای لیستها با استفاده از عملگر انتساب به راحتی قابل تغییر است.
اما مرتب بودن لیست در پایتون چه مفهومی دارد؟
مهمترین مفهومی که ذهن من درگیر کرده مرتب بودن یا نا مرتب بودن دادههایی است که در پایتون به صورت مجموعه تعریف میشوند.این مورد را با یک مثال توضیح میدهیم.
>>> list1=['apple','orange']
>>> list2=['orange','apple']
>>> print(list1==list2)
False
در مثال مذکور دوتا لیست تعریف کردهایم. که اعضای هر دو برابر هستند و فقط در موقعیتها و یا اندیسهای مختلف قرار گرفتهاند. سپس آنها را مقایسه کردهایم. حاصل مقایسه نشان میدهد این دو لیست برابر نیستند.در نتیجه ترتیب قرار گیری اعضا در دادههایی که از آنها به عنوان مرتب یاد می شود مهم است.اما در دادههای مجموعهای یا دنبالهدار که به عنوان مجموعه یا دادهی نا مرتب از آنها یاد میکنیم ترتیب دادهها مهم نیست لذا حاصل این نوع مقایسه True خواهد بود.
دستیابی به اعضای لیست
اعضای لیست با استفاده از اندیس ها قابل دستیابی و تغییر است. در صورتی که از اندیسهای مثبت استفاده کنید شمارش از اولین عنصر لیست و با اندیس صفر شروع میشود.
>>> mylist=['amir','ali']
>>> print(mylist)
['amir', 'ali']
>>> print(mylist[0])
amir
>>> print(mylist[1])
ali
>>> mylist[1]='hassan'
>>> print(mylist)
['amir', 'hassan']
اندیس منفی در پایتون
اگر از اندیس منفی استفاده کنید شمارش از آخرین عنصر شروع میشود. بدین ترتیب آخرین عنصر با ۱-، عنصر ماقبل آخر با ۲- اندیس دهی و در دسترس خواهد بود.
>>> mylist=['apple','bannana','cherry']
>>> print(mylist)
['apple', 'bannana', 'cherry']
>>> print(mylist[-1])
cherry
>>> print(mylist[-2])
bannana
>>> print(mylist[-3])
apple
محدودهای از اندیسها (برش لیستها)
در پایتون محدودهای از اندیسها نیز قابل استفاده است.به این صورت که ابتدا و انتهای لیست محدودهی مورد نظر بین آکلاد میاد و با ‘:’ از هم جدا میشه
اگر از محدودهای از اندیسها استفاده کنید حاصل یک لیست خواهد بود. این لیست شامل عنصر ابتدایی و عنصر ماقبل انتهایی مشخص شده و تمامی عناصر بین این دو عنصر است.
thislist = ["apple", "banana", "cherry", "orange", "kiwi", "melon", "mango"]
print(thislist[2:5])
اگر عنصر ابتدایی را مشخص نکنید پایتون لیست مورد نظر را از صفر شروع میکند.
thislist = ["apple", "banana", "cherry", "orange", "kiwi", "melon", "mango"]
print(thislist[:4])
['apple', 'banana', 'cherry', 'orange']
همچنین اگر آخرین عنصر را مشخص نکنید پایتون تا آخرین عنصر برمیگردونه.
>>> thislist = ["apple", "banana", "cherry", "orange", "kiwi", "melon", "mango"]
>>> print(thislist[2:])
['cherry', 'orange', 'kiwi', 'melon', 'mango']
محدودهای از اندیسهای منفی
همانطور که میتوان از اندیسهای منفی استفاده کرد.محدودهای از اندیسهای منفی نیز قابل استفاده است.در این مورد نیز شمارش از آخرین عضو لیست شروع میشود و طبق معمول آخرین عنصر با اندیس ۱- مشخص میشود.
>>> thislist = ["apple", "banana", "cherry", "orange", "kiwi", "melon", "mango"]
>>> print(thislist[-4:-1])
['orange', 'kiwi', 'melon']
>>> print(thislist[:-1])
['apple', 'banana', 'cherry', 'orange', 'kiwi', 'melon']
>>> print(thislist[-4:])
['orange', 'kiwi', 'melon', 'mango']
حلقهها و لیستها
با استفاده از حلقهها میتوانید لیستها را پیمایش کنید.
تکه کد زیر تک تک عناصر یک لیست را با استفاده از یک حلقهی for چاپ میکند.
>>> mylist=['bannana','apple','cherry','orange','kiwi','melon','orange']
>>> for x in mylist:
... print(x)
...
bannana
apple
cherry
orange
kiwi
melon
orange
حلقهی for مذکور معادل حلقهی while زیر است.
>>> i=0
>>> while i<len(mylist):
... print(mylist[i])
... i=i+1
...
bannana
apple
cherry
orange
kiwi
melon
orange
تست موجود بودن یک عنصر در لیست
برای این که مشخص دادهای عضو یک لیست است یا خیر از عملگر عضویت در پایتون استفاده میشود.
>>> mylist=['ali','amir','hassan']
>>> print('ali' in mylist)
True
>>> print('reza' in mylist)
False
>>> print('ali' not in mylist)
False
>>> print('reza' not in mylist)
True
در عمل از این نوع کدها در حلقههای یا دستورات شرطی استفاده میگردد.
mylist=['ali','amir','hassan']
>>> if 'ali' in mylist:
... print('علی عضو لیست است')
...
علی عضو لیست است
تعداد اعضای لیست
برای مشخص شدن طول لیست در پایتون از تابع len()
استفاده میشود.
>>> mylist=['ali','amir','hassan']
>>> len(mylist)
۳
افزودن عنصر جدید به لیست در پایتون
برای افزودن یک عنصر به آخر لیست از تابع appent()
استفاده میشود.
>>> thislist = ["apple", "banana", "cherry"]
>>> thislist.append("orange")
>>> print(thislist)
['apple', 'banana', 'cherry', 'orange']
برای اضافه کردن یک عنصر در اندیس مورد نظر از تابع insert()
به صورت زیر استفاده نمائید.
>>> thislist = ["apple", "banana", "cherry"]
>>> thislist.insert(1,'orange')
>>> print(thislist)
['apple', 'orange', 'banana', 'cherry']
حذف عناصر لیست در پایتون
با چند روش مختلف میتوانید یک عنصر را از لیست حذف نمائید.
حذف لیست با استفاده از تابع remove()
تابع remove()
عنصر مورد نظر را گرفته و آن را از لیست حذف میکند.
>>> mylist=['apple','bannana','orange']
>>> mylist.remove('bannana')
>>> print(mylist)
['apple', 'orange']
حذف سک عنصر از لیست با استفاده از تابع pop()
این تابع اندیس عنصر مورد نظر را دریافت کرده و عنصر با اندیس دریافتی را از لیست حذف و عنصر مورد نظر را برمیگرداند. در صورتی که این تابع آرگومان فراخوانی شودعنصر آخر را از لیست حذف میکند و عنصر مورد نظر را برمیگرداند.
>>> mylist=['apple','bannana','orange']
>>> mylist.pop()
'orange'
>>> mylist.pop(0)
'apple'
حذف یک عنصر از لیست با استفاده از کلمهی کلیدی del
برای حذف عنصری از لیست با استفاده از کلمهی کلیدی del
این کلمه ی کلیدی را نوشته و سپس عنصر مورد نظر را همراه با اندیس آن بنویسید.
>>> mylist=['apple','bannana','orange']
>>> del mylist[1]
>>> print(mylist)
['apple', 'orange']
اگر نام لیست را بدون اندیس بنویسید این کلمهیا لیست را حذف میکند
>>> mylist=['apple','bannana','orange']
>>> del mylist
>>> print(mylist)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'mylist' is not defined
تابع clear()
در پایتون
با استفاده از تابع clear()
میتوانید بدون حذف خود لیست کلیهی عناصر لیست را حذف نمائید.
>>> mylist=['apple','bannana','orange']
>>> mylist.clear()
>>> print(mylist)
[]
کپی کردن لیست در پایتون
در حالت عادی نمیتوانید لیستها را با استفاده از عمگر انتساب کپی کنید.چون نام یک لیست به اولین خانهی حافظهای که لیست در آن ذخیره شده اشاره میکند یا به عبارتی آدرس اولین خانهی حافظهای که لیست در آن ذخیره شده را نگه میدارد لذا اگر به طور معمول از =
استفاده کنید در حقیقت آدرس لیست مورد نظر را به متغیر جدید انتساب کردهاید. لذا در این حالت اگر یکی از لیستها را تغییر دهید در حقیقت تغییرات به هردو اعمال میشود.مثال زیر را ببینید
>>> list1=['apple','bannana']
>>> list2=list1
>>> print(list2)
['apple', 'bannana']
>>> list1.pop()
'bannana'
>>> print(list1)
['apple']
>>> print(list2)
['apple']
>>> list2.pop()
'apple'
>>> print(list2)
[]
>>> print(list1)
[]
جهت جلوگیری از این تغییرات یا به عبارتی هم پوشانی باید از توابع تعریف شده در پایتون استفاده نمائید.
کپی لیست در پایتون با استفاده از تابع copy()
این تابع یک کپی از لیست مورد نظر ایجاد کرده و آن را در متغییرمورد نظر شما جایگزین میکند.
>>> list1=['apple','bannana','orang']
>>> list2=list1.copy()
>>> print(list2)
['apple', 'bannana', 'orang']
>>> list1.pop(1)
'bannana'
>>> print(list1)
['apple', 'orang']
>>> print(list2)
['apple', 'bannana', 'orang']
>>> list2.pop()
'orang'
>>> print(list1)
['apple', 'orang']
>>> print(list2)
['apple', 'bannana']
کپی لیست ها با استفاده از تابع list()
در پایتون
روش دیگری که برای کپی لیستها در پایتون استفاده میشود، استفاده از تابع درون ساخت list()
است.
>>> list1=['amir','ali']
>>> list2=list(list1)
>>> print(list1)
['amir', 'ali']
>>> print(list2)
['amir', 'ali']
>>> list1.clear()
>>> print(list1)
[]
>>> print(list2)
['amir', 'ali']
اتصال دو لیست در پایتون
چندین روش برای الحاق یا اتصال دو لیست در پایتون وجود دارد.
اتصال لیستها با استفاده از +
آسانترین روش برای الحاق دو لیست در پایتون استفاده از عمگر +
است.
در این روش همانند جمع کرد دو عدد عمگر مورد نظر را نوشته و عملوند ها را که دو لیست هستند در سمت چپ و راست این عمگر مینویسیم.
>>> list1 = ["a", "b" , "c"]
>>> list2 = [1, 2, 3]
>>>
>>> list3 = list1 + list2
>>> print(list3)
['a', 'b', 'c', 1, 2, 3]
الحاق دو لیست با تابع appent()
در پایتون
در این روش جهت اتصال دو لیست از تابع append()
استفاده میکنیم.
به این صورت که تمامی عناصر لیست دو را با استفاده از این تابع به آخر لیست یک الحاق میکنیم
list1 = ["a", "b" , "c"]
>>> list2 = [1, 2, 3]
>>>
>>> for x in list2:
... list1.append(x)
...
>>> print(list1)
['a', 'b', 'c', 1, 2, 3]
الحاق دو لیست در پایتون با استفاده از تابع extend()
با استفاده از تابع میتوانید تمامی عناصر یک لیست را در انتهای لیست دیگری الحاق نمائید.
در مثال زیر list2 به انتهای list1 اضافه شده است.
>>> list1 = ["a", "b" , "c"]
>>> list2 = [1, 2, 3]
>>>
>>> list1.extend(list2)
>>> print(list1)
['a', 'b', 'c', 1, 2, 3]
سازندهی list()
گاهی اوقات ممکن است از سازندهی list()
برای ایجاد یک لیست استفاده نمائید.
thislist = list(("apple", "banana", "cherry")) # note the double round-brackets
print(thislist)
معکوس کردن لیست در پایتون
با استفاده از تابع reverse()
میتوانید ترتیب عنصر لیست را تغییر داده و لیست را معکوس نمائید.
>>> mylist=['amir','ali']
>>> mylist.reverse()
>>> print(mylist)
['ali', 'amir']
مرتب سازی لیست در پایتون
با استفاده از تابع sort()
میتوانید یک لیست در پایتون مرتب نمائید.
>>> cars = ['Ford', 'BMW', 'Volvo']
>>> cars.sort()
>>> print(cars)
['BMW', 'Ford', 'Volvo']
منبع: w3schools