متدهای لیست در پایتون – به زبان ساده با مثال و کد


هنوز در دنیای برنامهنویسی، پایتون به عنوان زبانی قدرتمند و کاربرپسند شناخته میشود زیرا پایتون در «علم داده» (Data Science) برای تجزیه و تحلیل اطلاعات و برای تولید الگوریتمهای «یادگیری ماشین» (Machine Learning)، در «یادگیری عمیق» (Deep Learning) برای ایجاد مدلهای شبکههای عصبی و حتی در توسعه نرمافزار برای نوشتن برنامههای کاربردی بسیار پراستفاده است. یکی از ویژگیهای منحصر به فرد پایتون این است که از انواع گستردهای از ساختارهای داده مانند لیستها، تاپلها، دیکشنریها و غیره پشتیبانی میکند. این پشتیبانی گسترده از انواع ساختارهای داده همراه با تعداد زیادی متد «داخلی» (Built-In) حل کردن چالشهای برنامهنویسی را بسیار آسان میکند. اما متاسفانه تازهکارها یا حتی برنامهنویسهای با تجربه و قدیمی نیز از همه این متدها آگاهی ندارند. در این مطلب از مجله فرادرس درباره متدهای لیست در پایتون بهعنوان یکی از این ساختارهای مهم داده توضیحاتی خواهیم داد.
تا حد امکان در مطلب روی بیشترین تعداد متدهای لیست در پایتون تمرکز خواهیم کرد. متدهایی که شناختن آنها برای برنامهنویسان ضروری است و برای حل مسائل درگیر با لیستها که تقریبا شامل همه مسائل دنیای واقعی میشود، کمک بسیار زیادی به برنامهنویسان میکنند. چه دانشمند داده باشید و چه برنامهنویسی حرفهای تا آخر این مطلب به دانشی قوی درباره متدهای لیست در پایتون مجهز خواهید شد که باعث میشود پروژههای بعدی پایتون را بسیار آسانتر حل کنید.

اهدافی که در این مقاله دنبال میکنیم در ادامه فهرست شدهاند.
- بررسی لیست و اصول آن
- درک تفاوت بین تابع و متد در پایتون
- پوشش مهمترین توابع و متدهای لیست در پایتون
لیست در پایتون چست؟
لیست در پایتون گزینه اصلی و شاید رایجترین ساختار برای ذخیره دادهها باشد. برای ساخت لیستها میتوان از روشهای مختلفی استفاده کرد. مثلا آنها را به صورت عینی تعریف کرد، از متد سازنده list() استفاده کرد یا با کمک متد split در پایتون رشتهای را به لیستی از اجزای تشکیل دهندهاش تبدیل کرد.
- لیست در پایتون به عنوان مجموعهای از اشیا که منظم، تغییرپذیر و با قابلیت «تنوعپذیری» (Heterogeneous) یا ذخیرهسازی انواع مختلفی داده تعریف شده است.
- نظم در لیستها به معنی این است که مجموعهسازی اشیا از نظم خاصی پیروی میکند.
- تغییرپذیر به معنی این است که لیست قابلیت حذف و اضافه یا تغییر در نظم دادهها را دارد.
- تنوعپذیری اشاره به این مطلب دارد که قادر خواهید بود هر نوعی از دادهها یا اشیاء را با یکدیگر درون هر لیستی ترکیب و تطبیق دهید. لیست میتواند هم زمان شامل اعداد int، فلوت، رشتهها یا هر نوع دادهی دیگری باشد.
- لیستها شامل یک جفت براکت باز و بسته [] میشوند بههمراه عناصری که درون لیست قرار گرفتهاند. عناصر درون لیست با کاما از یکدیگر جدا میشوند. وجود عنصر داخل لیست الزامی نیست.
- لیستها اشیایی پیمایشپذیر هستند. یعنی میتوان روی همه اعضای لیست پیمایش انجام داد.
- لیستها مانند آرایههایی با اندازه پویا هستند که در دیگر زبانهای برنامهنویسی مانند ++C و Java پیدا میشوند.

متدهای لیست در پایتون
پایتون چندین متد لیست داخلی دارد که برای اجرای وظایف مرتبط با لیست که بهصورت مکرر رخ میدهند استفاده میشوند. به عنوان نمونه، اگر میل داشته باشید که موردی را به لیست خود اضافه کنید، متد append را استفاده میکنید. تا انتهای این مطلب با تعداد زیادی متد مخصوص استفاده در لیستهای پایتون آشنا خواهید شد.
در انتهای این بخش به بیان تفاوت بین توابع و متدهای لیست در پایتون پرداختهایم.
در این مطلب، درباره متدهای کار با لیست در پایتون صحبت خواهیم کرد. فهرستی از این متدها در جدول زیر آوردهایم. تلاش میکنیم که به شفافترین شکل ممکن متدها را توضیح دهیم تا به درک عالی درباره معنی، پارامترهای مورد استفاده و سینتکس هر کدام از متدها برسیم و درک شما را از این متدها با کمک مثالهای مختلف به همراه کد تثبیت خواهیم کرد.
به لیستی از متدها که در ادامه بررسی خواهیم کرد و در زیر نمایش داده شدهاند، لطفا توجه کنید. البته در نظر داشته باشید که بعضی از این متدها با متدهای رشته در پایتون مشترک هستند.
متدهای لیست در پایتون | توضیحات |
append() | برای اضافه کردن یک عنصر به لیست استفاده میشود. |
extend() | عناصر لیستی را به لیست دیگری اضافه میکند. |
insert() | عنصری را به لیست وارد میکند. |
remove() | عنصری را از لیست حذف میکند. |
index() | کوچکترین ایندکس عنصری را برمیگرداند. |
count() | تعداد تکرار عنصری را در لیست برمیگرداند. |
pop() | عنصر موجود در ایندکسی که گرفته را حذف میکند. |
reverse() | چیدمان عناصر لیست را معکوس میکند. |
sort() | عناصر لیست را به ترتیب میچیند (صعودی یا نزولی). |
copy() | یک کپی سطحی از لیست ایجاد میکند. |
clear() | همه عناصر لیست را حذف میکند. |
max() | بزرگترین عنصر لیست را برمیگرداند. |
min() | کوچکترین عنصر لیست را برمیگرداند. |
len() | طول شیئی که دریافت کرده را محاسبه میکند و برمیگرداند. |
در ادامه هرکدام از متدهای ذکر شده در بالا را یک به یک توضیح خواهیم داد.
متد append در لیست های پایتون
متدappend() برای اضافه کردن فقط یک عنصر به لیست موجود استفاده میشود. در واقع بجای آنکه لیست جدیدی برگرداند، لیست اصلی موجود را اصلاح میکند. متد append() در لیستهای پایتون در زمانی که شیئی به متد موجود ارسال شده باشد، برای افزودن این شی به لیست کاربرد خواهد داشت. از این متد برای افزودن عنصری به آخر لیست استفاده میشود.
شکل ساده و اولیه سینتکس متد append()را در ادامه آوردهایم.
1list.append(item)
2
3append() Parameters
متدappend() عنصری را به عنوان ورودی قبول میکند و سپس آن را به انتهای لیست مورد نظر اضافه میکند. عنصر مورد اشاره هر چیزی مانند لیست دیگری، رشتهای، عدد، دیکشنری یا غیره میتواند باشد.
برگشت دادن مقادیر از متد append
همانطور که قبلا اشاره شد، متدappend() اصلاحاتی را فقط روی لیست اصلی اعمال میکند. هیچ مقداری را برنمیگرداند. در ادامه به دو مثال خواهیم پرداخت. در مثال اول عنصری را به لیستی خواهیم افزود و در مثال دوم افزودن لیستی دیگر را به لیست موجود توضیح خواهیم داد.
کد پایین اضافه کردن عنصری به لیست را نمایش میدهد.
1# animal list
2animal = ['cat', 'dog', 'rabbit']
3
4# an element is added
5animal.append('guinea pig')
6
7#Updated Animal List
8print('Updated animal list: ', animal)
وقتی که برنامه را اجرا کنید، خروجی که تولید میشود به شکل زیر خواهد بود.
Updated animal list: ['cat', 'dog', 'rabbit', 'guinea pig']
آیا می شود با استفاده از متد append لیستی را به لیست دیگری اضافه کرد؟
در ابتدا به کد زیر توجه کنید.
1# animal list
2animal = ['cat', 'dog', 'rabbit']
3
4# another list of wild animals
5wild_animal = ['tiger', 'fox']
6
7# adding wild_animal list to animal list
8animal.append(wild_animal)
9
10#Updated List
11print('Updated animal list: ', animal)
وقتی که برنامه بالا را اجرا کنید، خروجی تولید شده به شکل زیر خواهد بود.
Updated animal list: ['cat', 'dog', 'rabbit', ['tiger', 'fox']]
لازم است به این نکته توجه کنید که یک عنصر مجزا مانند لیست wild_animal در برنامه بالا به لیستanimal اضافه شده است. اگر میخواهید که عناصر لیستی را به لیست دیگری اضافه کنید به جای اینکه خود لیست را اضافه کنید باید از متدextend() که در بخش بعدی توضیح خواهیم داد استفاده کنید.

متد extend در لیست های پایتون
متد extend() در پایتون لیست اول را بهوسیله افزودن همه عناصر لیست دوم به انتهای لیست اول گسترش میدهد. لیست دوم به عنوان آرگومان به این متدextend() ارسال میشود.
سینتکس پایه متدextend() را در زیر نمایش دادهایم.
1list1.extend(list2)
در اینجا همه اعضایlist2 به انتهای list1 اضافه میشوند.
همانطور که قبلا اشاره شد، متدextend() فقط یک آرگومان میپذیرد که آنهم از جنس لیست است و سپس مقادیر آن آرگومان را به انتهای لیست خود میافزاید. اگر نیاز دارید که اعضای سایر نوع دادههای بومی پایتون را مانند تاپل یا مجموعه را به لیست خود اضافه کنید، میتوانید مطابق کد نوشته شده در زیر عمل کنید.
1# add elements of a tuple to list
2list.extend(list(tuple_type))
3
4# or even like this
5list.extend(tuple_type)
6
7Return Value from extend()
در پایتون، متدextend() نیز همانند متدappend() تغییرات را فقط روی لیست اصلی اعمال میکند و هیچ مقداری را برنمیگرداند.
در کد زیر مثالی را درباره استفاده از متدextend() آماده کردهایم.
1# language list
2language = ['French', 'English', 'German']
3
4# another list of language
5language1 = ['Spanish', 'Portuguese']
6
7language.extend(language1)
8
9# Extended List
10print('Language List: ', language)
وقتی که برنامه نوشته شده در بالا را اجرا کنید، خروجی تولید شده به شکل زیر خواهد بود.
Language List: ['French', 'English', 'German', 'Spanish', 'Portuguese']
تفاوت بین متدهای append و extend چیست؟
تفاوت اصلی بین متدهای append و extend این است که متد append() فقط یک عنصر را به لیست اضافه میکند درحالی متدextend() عناصر لیستی که به عنوان آرگومان گرفته است را به لیست اول الحاق میکند. البته که آرگومانی که متد extend() میپذیرد لازم نیست که حتما از نوع لیست باشد اما باید حتما پیایشپذیر باشد.
متد insert در لیست های پایتون
متدinsert() در پایتون به قراردادن عنصری در مکان مشخص شده در لیست کمک میکند. سینتکس پایه این متد به شکل زیر است.
1list.insert(index, element)
پارامترهای متد insert
متدinsert() فقط ۲ پارامتر میپذیرد که باید طبق جایگاهی که در بالا میبینید به این متد ارسال شوند.
- Index: این پارامتر محلی را نشان میدهد که عنصر مورد نظر باید در آنجا بنشیند.
- Element: عنصری است که باید درون لیست جایگیر شود.
مقدار برگشتی متد insert
متدinsert() دقیقا مانند متدهای extend()و append()فقط عنصری که به عنوان پارامتر برایش ارسال شده را وارد لیست میکند و هیچ مقداری را برگشت نمیدهد. در مثال زیر جایگزاری مقداری را در لیست به کمک متدinsert()پیادهسازی کردهایم.
1# vowel list
2vowel = ['a', 'e', 'i', 'u']
3
4# inserting element to list at 4th position
5vowel.insert(3, 'o')
6
7print('Updated List: ', vowel)
زمانی که کد بالا را اجرا کنید، خروجی تولید شده به شکل زیر خواهد بود.
Updated List: ['a', 'e', 'i', 'o', 'u']
نکته مهمی در لیستها وجود دارد که در این متد باید مورد توجه قرار گیرد، توجه کنید که ایندکسها در پایتون از ۰ شروع میشوند نه از عدد ۱. به عنوان مثال، در موردی که میخواهید عنصری را در خانه چهارم لیستی وارد کنید، باید عدد ۳ را به عنوان پارامتر ایندکس به متد ارسال کنید. به همین شکل، اگر بخواهید عنصری را در جایگاه نهم لیستی وارد کنید باید از عدد ۸ به عنوان ایندکس استفاده کنید.
متد remove در لیست های پایتون
متدremove() برای این استفاده میشود بدنبال عنصر گرفته شده به عنوان پارامتر بگردد و اولین گزینه همسان پیدا شده در لیست را حذف کند.
سینکس پایه این متد در کد زیر آمده است.
1list.remove(element)
پارامتر متدremove() به این شرح است، متدremove()فقط یک آرگومان را به عنوان ورودی میگیرد که قرار است از لیست حذف شود. در اول متد هم قبل از نقطه نام لیستی را میآوریم که این متد باید روی آن لیست عملیات خود را انجام دهد.
در موردی که آرگومانی دریافت شده توسط متدremove() در لیست هدف وجود نداشته باشد، پایتون خطای استثنای valueError را برمیگرداند.
متد remove چه مقداری را برمی گرداند؟
متدremove() فقط کار حذف کردن عنصر گرفته شده را در لیست انجام میدهد. این متد هیچ مقداری را برنمیگرداند.
در کد زیر مثالی را پیادهسازی کردهایم درباره حذف کردن عنصری که به متدremove()داده شده.
1# animal list
2animal = ['cat', 'dog', 'rabbit', 'guinea pig']
3
4# 'rabbit' element is removed
5animal.remove('rabbit')
6
7#Updated Animal List
8print('Updated animal list: ', animal)
هنگامی که کد بالا اجرا شود، خروجی زیر را تولید خواهد کرد.
Updated animal list: ['cat', 'dog', 'guinea pig']
متدremove()فقط عنصری را حذف میکند که به عنوان آرگومان گرفته است. اما درصورتی که نیاز داشته باشید عنصرها را با توجه به ایندکس خاصی مثلا هفتمین یا اولین عنصر را حذف کنید باید از متد pop() یا عملگر del استفاده کنید.
متدremove() برای «نوع دادههای اصلی» (Native Datatypes) زیر استفاده میشود.
- «لیستها» (Lists)
- «رشتهها» (Strings)
- «دیکشنریها» (Dictionaries)
- «مجموعهها» (Sets)
- «تاپلها» (Tuples)
- و سایر نوع دادههای اصلی
متد index در لیست های پایتون
متد index در پایتون آرگومانی میپذیرد، به دنبال آرگومان خود در لیست میگردد و در آخر کوچکترین ایندکس یا ایندکس اولین جایگاهی که آرگومان مورد نظر را پیدا کرده برمیگرداند. باید توجه کرد که برای تکرار هر آرگومان در لیستها هیچ محدودیتی وجود ندارد. به بیان سادهتر، متدindex() از جایگاه صفر لیست یا خانه اول لیست شروع به جستوجو به دنبال آرگومان گرفته شده خود، میکند. فرقی ندارد که این آرگومان ۱ بار در لیست وجود داشته باشد یا هزاران بار تکرار شده باشد. اولین باری که عنصر همسان با آرگومان خود را پیدا کند شماره جایگاه را به عنوان خروجی برمیگرداند.
سینتکس پایه متد index() به صورت زیر میباشد.
1list.index(element)
پارامتر متد index() به این شرح است که فقط یک پارامتر را میپذیرد. در تکه کد بالا element همان آرگومانی است که باید به عنوان الگوی جستوجو استفاده شود.
مقدار برگشتی متد index
متدindex() همانطور که از آن انتظار میرود شماره ایندکس اولین عنصری را که در لیست پیدا کرده برمیگرداند. در موردی که هیچ عنصر همسانی با آرگومان متدindex() پیدا نشود، پایتون خطای ValueError برمیگرداند که به این معناست چنین عنصری در لیست وجود ندارد.
در کد زیر مثالی از بابت جستوجو کردن به دنبال جایگاه عنصر خاصی را در لیست آوردهایم.
1# vowels list
2vowels = ['a', 'e', 'i', 'o', 'i', 'u']
3
4# element 'e' is searched
5index = vowels.index('e')
6
7# index of 'e' is printed
8print('The index of e:', index)
9
10# element 'i' is searched
11index = vowels.index('i')
12
13# only the first index of the element is printed
14print('The index of i:', index)
زمانی که کد نمونه بالا را اجرا کنید، خروجی تولید شده زیر را مشاهده خواهید کرد.
The index of e: 1 The index of i: 2
این متد همچنین روی نوع دادههای اصلی تاپل و رشته نیز کار میکند.
متد count در لیست های پایتون
متدcount() برای شمردن تعداد تکرارهای عنصری در لیست استفاده میشود. به عبارت سادهتر، متدcount() در ابتدا تعداد ظاهر شدن عنصر خاصی را در لیست میشمارد و سپس تعداد کل را برمیگرداند.
سینتکس پایه متد count() به صورت زیر است.
1list.count(element)
پارامترهای متدcount() به این صورت است که فقط یک پارامتر دارد و آن هم عنصری است که باید در لیست به دنبال تکرارهای آن باشد.
مقادیر برگشتی متد count
متدcount() تعداد تکرار یک عنصر خاص را که به عنوان آرگومان به این متد داده شده میشمارد نتیجه این شمارش را برمیگرداند. اگر عنصر داده شده در لیست وجود نداشته باشد، پایتون، خطا بر نمیگرداند و به سادگی فقط مقدار صفر را نمایش میدهد.
در کد زیر چنین فرض گرفتهایم که در لیستی به دنبال تعداد تکرار عنصری خاص میگردیم.
1# vowels list
2vowels = ['a', 'e', 'i', 'o', 'i', 'u']
3
4# count element 'i'
5count = vowels.count('i')
6
7# print count
8print('The count of i is:', count)
9
10# count element 'p'
11count = vowels.count('p')
12
13# print count
14print('The count of p is:', count)
زمانی که کد بالا را اجرا کنیم، خروجی زیر تولید میشود.
The count of i is: 2 The count of p is: 0
از این متد میتوان در نوع داده اصلی تاپل نیز استفاده کرد.
متد pop در لیست های پایتون
دستور pop در پایتون عنصری را در ایندکسی که گرفته است اول از لیست حذف میکند و سپس آن را برمیگرداند. ایندکس جایگاه هدف در لیست بهصورت آرگومان به متد ارسال میشود.
سینتکس پایه متدpop() به شکل زیر است.
1list.pop(index)
پارامترهای مورد استفاده متد pop() به این شرح هستند که متد، فقط یک آرگومان ورودی دارد. آرگومان همان ایندکسی را نشان میدهد که باید محتویاتش در لیست حذف شود.
وقتی ایندکسی که به متدpop() ارسال شده بود بیشتر از محدوده اعضای لیست بود خطای استثنای IndexError: pop index out of range توسط پایتون به کاربر برگشت داده میشود.

ارسال پارامتر به متدpop() اختیاری است. در مواردی که مقدار آرگومان متدpop() خالی باشد و متد بدون آرگومان اجرا شود مقدار ایندکس-1 بهصورت پیشفرض در متد قرار میگیرد که در نتیجه آن عملیات متدpop() بر روی آخرین عضو لیست اعمال میشود.
مقدار برگشتی متد pop
متدpop() مقداری برگشتی دارد. متد مقدار موجود در ایندکس داده شده در لیست را برمیگرداند. جدا از این، عنصر موجود در ایندکس داده شده در لیست را حذف میکند.
مثالی را در نظر بگیرید که در آن میخواهیم عنصری موجود، در ایندکس داده شده در لیست را بر روی مانیتور چاپ کنیم. مثال مورد نظر را در کد زیر پیادهسازی کردهایم.
1# programming language list
2language = ['Python', 'Java', 'C++', 'French', 'C']
3
4# Return value from pop()
5# When 3 is passed
6return_value = language.pop(3)
7print('Return Value: ', return_value)
8
9# Updated List
10print('Updated List: ', language)
وقتی که کد بالا را اجرا کنیم خروجی تولید شده به شکل زیر نمایش داده میشود.
Return Value: French Updated List: ['Python', 'Java', 'C++', 'C']
متد pop() عنصری را که در ایندکس داده شده بهعنوان آرگومان در لیست پیدا میکند، حذف میکند و برمیگرداند اما در مواردی که میخواهید عنصر مشخصی را فارق از جایگاهش در لیست حذف کنید لازم است که از متد remove() استفاده کنید.
متد reverse در لیست های پایتون
متد reverse() به معکوس کردن نظم عناصر در لیست داده شده کمک میکند.
سینتکس پایه متد reverse()به شکل زیر است.
1list.reverse()
درباره پارامترهای متد reverse() باید بیان کنیم که این متد هیچ پارامتری نمیگیرد.
مقدار برگشتی متد reverse
متد reverse() همانطور که هیج مقداری را به عنوان آرگومان نمیگیرد، هیچ مقداری را نیز به عنوان خروجی برنمیگرداند. فقط متدی برای معکوس کردن چیدمان عناصر و بروز رسانی لیست با نظم جدید است.
توجه کنید که به این متد باید لیستی را که قرار است عملیات بر روی آن اجرا شود معرفی کنیم. اما این لیست به صورت آرگومان یعنی در وسط پرانتزهای جلوی نام متد قرار نخواهد گرفت. بلکه نام لیست قبل از نام متد میآید و بین آنها نقطهای قرار میگیرد. این یکی از تفاوتهای روش استفاده از «تابع» (Function) و «متد» (Method) است.
در مثال زیر نحوه استفاده از این متد را به صورت کد پیادهسازی کردهایم تا ببینید چگونه لیستی معکوس میشود.
1# Operating System List
2os = ['Windows', 'macOS', 'Linux']
3print('Original List:', os)
4
5# List Reverse
6os.reverse()
7
8# updated list
9print('Updated List:', os)
زمانی که کد بالا را اجرا کنید. خروجی تولید شده به شکل زیر خواهد بود.
Original List: ['Windows', 'macOS', 'Linux'] Updated List: ['Linux', 'macOS', 'Windows']
متد sort در لیست های پایتون
پایتون هم مثل متد sort() در ++C و Java و زبانهای دیگر برنامهنویسی متد sort()درونی مخصوص به خود را دارد. متدsort()برای ایجاد چیدمان مرتب دادهها در لیست بکار میرود. این نظم عناصر در لیست میتواند از کوچک به بزرگ یا از بزرگ به کوچک باشد.
سینتکس متد sort() را در سه شکل مختلف میتوان پیادهسازی کرد که در ادامه فهرست کردهایم.
- list_name.sort() – این سینتکس عناصر داخل لیست را به ترتیب «صعودی» (Ascending) منظم میکند.
- list_name.sort(reverse=True) – این سینتکس عناصر لیست را به ترتیب «نزولی» (Descending) منظم میکند.
- list_name.sort(key=…, reverse=…) – این سینتکس لیست را با توجه به انتخاب کاربر منظم میکند.
پارامترهای متد sort() به این شرح هستند که به صورت پیشفرض متدsort()در پایتون نیازی به پارامتر اضافی ندارد اما دو پارامتر اختیاری وجود دارند.
- Reverse – اگر این پارامتر مقدار «صحیح» (True) داشته باشد لیست با نظم «نزولی» (Descending) چیدهخواهد شد.
- Key – این پارامتر به عنوان کلید برای مقایسه چیدمان رفتار خواهد کرد.
مقادیر برگشتی متد sort
متدsort()به عنوان مقدار برگشتی همان لیستی را که بهصورت منظم با توجه به پارامترهایی که دریافت کرده چیده است و بروز رسانی کرده است را برمیگرداند. لیست نامنظم قبلی با نظم قبلی دیگر وجود نخواهد داشت.
پیاده سازی متد list_name.sort
این سینتکس عناصر داخل لیست را به ترتیب صعودی منظم میکند. بیشترین کاربرد این متد در منظم چیدن لیستی از اعداد صحیح، اعداد اعشاری، رشتهها و چیزهای دیگر است. در کد نمایش داده شده پایین مثالی از اعمال چیدمان صعودی یا از کوچک به بزرگ را روی لیستی پیادهسازی کردهایم.
1# List of Integers
2numbers = [1, 3, 4, 2]
3 # Sorting list of Integers
4numbers.sort()
5
6print(numbers)
7
8# List of Floating point numbers
9decimalnumber = [2.01, 2.00, 3.67, 3.28, 1.68]
10
11# Sorting list of Floating point numbers
12decimalnumber.sort()
13
14print(decimalnumber)
15
16# List of strings
17words = ["Geeks", "For", "Geeks"]
18
19# Sorting list of strings
20words.sort()
21
22print(words)
خروجی تولید شده توسط کد بالا به شکل زیر خواهد بود.
[1, 2, 3, 4] [1.68, 2.0, 2.01, 3.28, 3.67] ['For', 'Geeks', 'Geeks']
پیاده سازی متد sort درحالی که پارامتر reverse برابر True باشد
این سینتکس عناصر لیست را به ترتیب نزولی منظم میکند. برای این سینتکس هم در ادامه مثالی پیادهسازی کردهایم. به کد زیر توجه کنید.
1# List of Integers
2numbers = [1, 3, 4, 2]
3
4# Sorting list of Integers
5numbers.sort(reverse=True)
6
7print(numbers)
8
9# List of Floating point numbers
10decimalnumber = [2.01, 2.00, 3.67, 3.28, 1.68]
11
12# Sorting list of Floating point numbers
13decimalnumber.sort(reverse=True)
14
15print(decimalnumber)
16
17# List of strings
18words = ["Geeks", "For", "Geeks"]
19
20# Sorting list of strings
21words.sort(reverse=True)
22
23print(words)
خروجی تولید شده به صورت زیر خواهد بود.
[4, 3, 2, 1] [3.67, 3.28, 2.01, 2.0, 1.68] ['Geeks', 'Geeks', 'For']
پیاده سازی متد sort درحالی که پارامترهای reverse و key مقداردهی شده اند
و برای گزینه آخر در انواع سینتکسهای متد sort() به پیادهسازی سینتکسی پرداختهایم که منظم کردن ترتیب لیستها را به انتخاب کاربر واگزار میکند.
1# function to return the second element of the
2# two elements passed as the paramater
3def sortSecond(val):
4 return val[1]
5
6# list1 to demonstrate the use of sorting
7# using using second key
8list1 = [(1,2),(3,3),(1,1)]
9
10# sorts the array in ascending according to
11# second element
12list1.sort(key=sortSecond)
13print(list1)
14
15# sorts the array in descending according to
16# second element
17list1.sort(key=sortSecond,reverse=True)
18print(list1)
19# Copy CodeRun on IDE
خروجی کد بالا به صورت زیر نمایش داده میشود.
[(1, 1), (1, 2), (3, 3)] [(3, 3), (1, 2), (1, 1)]
متد copy در لیست های پایتون
متد copy() به برگرداندن کپی سطحی از یک لیست کمک میکند. البته توجه کنید که لیستها را با استفاده از عملگر = هم میتوان کپی کرد. برای مثال به کد زیر نگاه کنید.
1old_list = [1, 2, 3]
2new_list = old_list
اما مشکل اصلی این نوع کپی کردن این است که اگر تغییری در new_list اعمال کنید، این تغییر در old_list نیز اعمال میشود. به کد نوشته شده در زیر توجه کنید.
1old_list = [1, 2, 3]
2new_list = old_list
3
4# add element to list
5new_list.append('a')
6
7print('New List:', new_list )
8print('Old List:', old_list )
وقتی که این کد را اجرا کنید خروجی تولید شده به شکل زیر خواهد بود.
Old List: [1, 2, 3, 'a'] New List: [1, 2, 3, 'a']
اتفاقی که دیدید به دلیل این است که عملگر= مقادیر لیست را بهصورت واقعی در متغیر new_list کپی نمیکند، بلکه در متغیر new_list تنها چیزی که وجود دارد آدرس محلی است که عناصر لیست old_list در حافظه قرار دارند.
به هرحال، اگر بخواهید که کپی واقعی از عناصر لیست خود تهیه کنید، طوری که درصورت ایجاد هر نوع تغییری در لیست جدید عناصر لیست اصلی بدون تغییر و دست نخورده باقی بمانند باید از متد copy() استفاده کنید. به این نوع از کپی کردن کپی «کم عمق» (Shallow Copy) میگویند.
سینتکس پایه برای متدcopy() به صورت آمده در پایین میباشد.
1new_list = list.copy()
پارامترهای متدcopy() به این شرح هستند که این متد هیچ پارامتری نمیپذیرد.

مقادیر برگشتی متد copy
متد copy() فقط یک لیست را برمیگرداند. این لیست با تمام مشخصات لیست اصلی همسان است اما نام جداگانهای دارد. لیست اصلی بدون تغییر ثابت مانده است و هر تغییری که از این به بعد در هرکدام از لیستها اعمال شود به لیست دیگر هیچ تاثیری ندارد. این دو لیست از یکدیگر مستقل هستند.
برای نمایش نحوه کار متدcopy() مثالی را در ادامه کدنویسی کردهایم.
1# mixed list
2list = ['cat', 0, 6.7]
3
4# copying a list
5new_list = list.copy()
6
7# Adding element to the new list
8new_list.append('dog')
9
10# Printing new and old list
11print('Old List: ', list)
12print('New List: ', new_list)
زمانی که کد بالا اجرا شود، خروجی که بدست میآید به شکل زیر خواهد بود.
Old List: ['cat', 0, 6.7] New List: ['cat', 0, 6.7, 'dog']
میتوانید مشاهده کنید که بعد از اینکه لیست جدید تغییر داده شده لیست قبلی دست نخورده باقی مانده است.
متد clear در لیست های پایتون
از متد clear() برای حذف کردن همه اعضای لیست استفاده میشود. سینتکس پایه این متد را در کد زیر پیادهسازی کردهایم.
1list.clear()
وضعیت پارامترهای این متد نیز به این صورت است که هیچ پارامتری به عنوان ورودی نمیپذیرد. فقط نام لیستی که باید عملیات حذف اعضا بر روی آن انجام شود را باید قبل از نام متد بیاوریم بعد یک نقطه و سپس نام متد را نیز مینویسیم.
مقادیر برگشتی متد clear
تنها وظیفه متد این است که لیست داده شده را بهطور کامل خالی کند. این متد هیچ مقداری را برنمیگرداند. به عنوان مثال، کارکرد متدclear() را بر روی یک لیست رندم در زیر پیادهسازی کردهایم.
1# Defining a list
2list = [{1, 2}, ('a'), ['1.1', '2.2']]
3
4# clearing the list
5list.clear()
6
7print('List:', list)
نتیجه حاصل از کد بالا بهصورت زیر نمایش داده میشود.
List: []
به این نکته توجه کنید که اگر از پایتون۳.۲ یا پایینتر استفاده میکنید، نمیتوانید که متد clear() را بکار ببرید در عوض میتوانید که از عملگر del استفاده کنید.
تابع max در لیست های پایتون
تابع max() بین عناصر لیست جستوجو میکند و با ارزشترین مقدار لیست را نمایش میدهد. توجه کنید که برای مقایسه اعضا، یا همه اعضا باید عدد باشند یا همه اعضا باید از نوع رشته باشند.
پارامترهای ورودی این تابع به این شرح است که یک ورودی میگیرد و آنهم همان لیستی است که باید بین اعضای آن پیمایش و مقایسه انجام دهد. در ادامه شکل پایه این تابع را پیادهسازی کردهایم.
1result = max(list_name)
مقادیر برگشتی تابع max
تابع max() مقداری را به عنوان خروجی برمیگرداند که همان مقدار بزرگترین عنصر لیست است. در کد زیر برای نمونه از تابع max() بر روی لیست فرضی قیمتها استفاده کردهایم تا بیشترین قیمت را پیدا کنیم.
1prices = [589.36, 237.81, 230.87, 463.98, 453.42]
2price_max = max(prices)
3print(price_max)
خروجی کد بالا بهصورت زیر خواهد بود.
589.36
تابع min در لیست های پایتون
تابع min() بر عکس تابع max() عمل میکند. از این تابع برای پیدا کردن کوچکترین عنصر در هر لیستی استفاده میشود. فقط همانند تابع max() دو شرط اصلی دارد.
- اعضای لیست از نوع دادههای اصلی باشند.
- همه اعضای لیست از یک نوع باشند. برای مثال نوع داده عددی با نوع داده رشتهای قابل قیاس نیست.
پارامترهای ورودی این تابع به این شرح است که یک ورودی میگیرد و آنهم همان لیستی است که باید بین اعضای آن پیمایش و مقایسه انجام دهد. شکل پایه تابع min() را در پایین کدنویسی کردهایم.
1result = min(list_name)
مقادیر برگشتی تابع min
تابع min() به عنوان مقدار برگشتی، کوچکترین عنصر لیستی را که بر روی آن اجرا شده است را برمیگرداند.

به عنوان مثال در ادامه میخواهیم ماهی از سال را که کمترین میزان فروش در آن انجام گرفته است را پیدا کنیم. برای شروع دو لیست فرضی داریم - لیست مربوط به ماهها و لیست مربوط به قیمت- که با یکدیگر متقارن هستند یعنی عناصر موجود در هر ایندکس به یکدیگر مرتبط هستند. در ابتدا به کمک تابع min() در لیست مربوط به قیمتها کمترین قیمت را پیدا میکنیم. سپس با کمک تابع index () در لیست مربوط به قیمتها به دنبال ایندکس مربوط به کمترین قیمت میگردیم و در نهایت به کمک ایندکس پیدا شده در لیست مربوط به ماهها، ماهی که کمترین میزان هزینه در آن انجام گرفته است را پیدا میکنیم.
1months = ['January', 'February', 'March']
2prices = [238.11, 237.81, 238.91]
3# Identify min price
4min_price = min(prices)
5 # Identify min price index
6min_index = prices.index(min_price)
7 # Identify the month with min price
8min_month = months[min_index]
9print(min_month)
تابع len در لیست های پایتون
آخرین گزینهای که در این مطلب درباره متدهای لیست در پایتون بررسی خواهیم کرد تابعlen() است، این تابع تعداد عناصر موجود در لیست را برمیگرداند. پارامترهای این تابع به این شرح است که یک آرگومان ورودی دارد و آن آرگومان نام همان لیستی است که باید بر روی آن پیمایش انجام دهد.
شکل سینکس پایه تابع len() به صورت زیر است.
1result = len(list)
البته گرفتن خروجی با عبارت result = اجباری نیست.
مقادیر برگشتی تابع len
این تابع یک مقدار برگشتی دارد و آن هم تعداد عناصر موجود در لیستی است که به عنوان پارامتر به این تابع ارسال شده.
در مثال پیادهسازی شده در پایین به کمک تابع len() تعداد عنصرهای موجود در دو لیست متفاوت را پیدا کردهایم.
1list_1 = [50.29]
2list_2 = [76.14, 89.64, 167.28]
3print('list_1 length is ', len(list_1))
4print('list_2 length is ', len(list_2))
خروجی کد بالا بهصورت زیر میشود.
list_1 length is 1 list_2 length is 3
در بخش بعدی به بیان تفاوت بین توابع و متدهای لیست در پایتون پرداختهایم.
تفاوت بین توابع لیست و متدهای لیست در پایتون
در پایتون، تابع میتواند پارامترهای ورودی بگیرد و ممکن است نتیجهای را به عنوان خروجی تابع برگرداند یا حتی هیچ خروجی برنگرداند. اما از طرف دیگر، متد میتواند به عنوان نمونهای از شیئی ارسال شده باشد. ممکن است خروجی مورد انتظاری را نتیجه بدهد یا ندهد. تفاوت کلیدی بین تابع و لیست این است که توابع میتوانند اشیا را به عنوان ورودی بگیرند ولی متدها در عوض روی اشیا عملیات انجام میدهند. در واقع متدها برای اینکه بتوانند با اشیا کار کنند از قبل برای آن اشیا تعریف شدهاند. در نتیجه در زبان برنامهنویسی پایتون درحالی که همه متدها تابع هستند، همه تابعها متد نیستند.
ایجاد لیست در پایتون با استفاده از تابع list
قبل از اینکه متدهای لیست در پایتون را بررسی کنیم باید با تابع list() آشنا شویم و در ابتدا نحوه ایجاد لیستها را بیاموزیم.
تابعlist()برای ساخت لیستها در پایتون استفاده میشود. این تابع، ساختار دادهای پیمایشپذیر را به عنوان پارامتر دریافت میکند و لیستی را به عنوان خروجی برمیگرداند. این داده پیمایشپذیر میتواند «تاپل» (tuple)، «دیکشنری» (dictionary)، «رشته» (string) و حتی لیست دیگری نیز باشد. برای آزمودن این مطلب، کد زیر را آوردهایم.
1# sample iterables
2sample_tuple = (1,2,3,4)
3sample_dict = {'a': 1, 'b': 2, 'c': 3}
4sample_string = 'hello'
5
6# converting to list
7print('tuple to list', list(sample_tuple))
8print('dict to list', list(sample_dict))
9print('string to list', list(sample_string))
خروجی کد بالا به صورت زیر میشود.
[1, 2, 3, 4] ['a', 'b', 'c'] ['h', 'e', 'l', 'l', 'o']
جمع بندی
در این مطلب از مجله فرادرس، با انواع مختلفی از متدها و توابع مربوط به لیست در پایتون آشنا شدیم. اصول پایهای مربوط به مهمترین توابع و متدهای پایتون را پوشش دادیم و سعی کردیم تا حد امکان به پیادهسازی کدهای مربوط به آنها بپردازیم. متدها و توانایی استفاده از آنها وقتی به کار میآیند که به عنوان «تحلیلگر داده» (Data Analyst)، درحال انجام تجزیه و تحلیلی رو پایگاهداده باشید یا اینکه به عنوان «دانشمند داده» (Data Scientist) درحال ساخت مدلهای «یادگیری ماشین» (Machine Learning) باشید.
اگر بخواهیم از چیزهایی که در این مطلب دربارهشان صحبت کردهایم خلاصهای ارائه کنیم، به نکات زیر میتوان اشاره کرد.
- به مجموعهای منظم و قابل تغییر که میتواند محتوای متنوعی از اشیا را شامل شود، در پایتون لیست میگویند، به وسیله براکت [ ] نمایشداده میشود و هر عنصر با عنصر مجاور به وسیله کاما از هم جدا میشوند.
- توابع مربوط به لیست در پایتون اشیا را هم به عنوان پارامتر ورودی میتوانند بپذیرند اما متدها در مقابل بر روی اشیا کار میکنند.
- از متدهای لیست در پایتون میتوان به append() ، remove() ، index() و غیره اشاره کرد و برای توابع مربوط به لیست در پایتون میتوان از max() ، min() ، len() و غیره نام برد.

سوالات متداول
در این بخش به سوالاتی میپردازیم که بیشترین تکرار را بین کاربران داشته اند و ممکن است برای شما هم پیش بیاید.
تفاوت بین لیست و تاپل چیست؟
هر دو گزینه لیست و تاپل از ساختارهای پیمایشپذیر در پایتون هستند. اما لیستها قابل تغییراند و تاپلها قابل تغییر نیستند.
چه گزینه هایی به عنوان متدهای لیست در پایتون وجود دارند؟
لیستها در پایتون از انواع مختلفی از متدها پشتیبانی میکنند. برای مثال میتوان به ()append() ، insert() ، remove() ، index و غیره اشاره کرد.
مهمترین توابع در پایتون چه هستند؟
میتوان از ()max و ()min و ()len به عنوان چند تابع از توابع مهم در پایتون نام برد که در ارتباط با لیستها نیز به خوبی کار میکنند.