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

۱۳۳۰ بازدید
آخرین به‌روزرسانی: ۱۳ خرداد ۱۴۰۳
زمان مطالعه: ۱۸ دقیقه
متدهای لیست در پایتون – به زبان ساده با مثال و کد

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

فهرست مطالب این نوشته
997696

تا حد امکان در مطلب روی بیشترین تعداد متدهای لیست در پایتون تمرکز خواهیم کرد. متدهایی که شناختن آن‌ها برای برنامه‌نویسان ضروری است و برای حل مسائل درگیر با لیست‌ها که تقریبا شامل همه مسائل دنیای واقعی می‌شود، کمک بسیار زیادی به برنامه‌نویسان می‌کنند. چه دانشمند داده باشید و چه برنامه‌نویسی حرفه‌ای تا آخر این مطلب به دانشی قوی درباره متدهای لیست در پایتون مجهز خواهید شد که باعث می‌شود پروژه‌های بعدی پایتون را بسیار آسانتر حل کنید.

تصویری که جریان کاری متد های رایج لیست در پایتون را نشان می دهد

اهدافی که در این مقاله دنبال می‌کنیم در ادامه فهرست شده‌اند.

  • بررسی لیست و اصول آن
  • درک تفاوت بین تابع و متد در پایتون
  • پوشش مهمترین توابع و متدهای لیست در پایتون

لیست‌ در پایتون چست؟

لیست‌ در پایتون گزینه اصلی و شاید رایج‌ترین ساختار برای ذخیره داده‌ها باشد. برای ساخت لیست‌ها می‌توان از روش‌های مختلفی استفاده کرد. مثلا آن‌ها را به صورت عینی تعریف کرد، از متد سازنده 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 به عنوان چند تابع از توابع مهم در پایتون نام برد که در ارتباط با لیست‌ها نیز به خوبی کار می‌کنند.

بر اساس رای ۱ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
MindMajixAnalyticsVidhyaDigitalOcean
نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *