در پایتون به جز اعداد صحیح، اعداد ممیز شناور، اعداد مختلط و رشته ها، انواع داده دیگر مانند لیست ها، دیکشنری ها و تاپل ها وجود دارند. لیست ها (Lists) یکی از اصلی ترین ساختمان داده های پایتون هستند که شامل توالی از داده ها با نوع های مختلف است. 

 ایجاد لیست ها

لیست ها از انواع داده های متوالی هستند که عناصر (Elements) درون آن میان براکت های باز و بسته قرار می گیرد و هر عنصر با ویرگول از عنصر بعدی جدا می شود. عناصر درون لیست می توانند از انواع داده مختلف باشند. یک لیست می تواند شامل یا ترکیبی از :

  • اعداد صحیح (Integer)
  • اعداد ممیز شناور ( Floating Point)
  • رشته (String)
  • دکشنری (Dictionary)
  • تاپل (Tuple)
  • لیست

به لیستی ای که شامل لیست دیگری باشد را لیست های تو در تو (Nested List) می گویند. روش های متفاوتی برای ایجاد کردن لیست ها وجود دارد. عبات های زیر به ترتیب دو متغیر از نوع لیست را ایجاد می کنند که در این لحظه هر دو خالی هستند. در حالت اول از براکت های باز و بسته [] و در خالت دوم از تابع ()list برای ایجاد کردن دو لیست خالی استفاده شده است.

در خطوط ۳ و ۴ از تابع ()type برای اطلاع از نوع متغیرهای sample_list1 و sample_list2 استفاده شده است که در هر دو حالت نوع list برگشت داده می شود. به جز اعلان های صریح که در بالا گفته شد، برخی از توابع نیز به عنوان خروجی لیست برگشت می دهند که در این حالت متغیری که مقدار برگشتی تابع در آن ذخیره می شود، به صورت غیر صریح از نوع لیست تغریف خواهد شد.

مقدار دهی اولیه به لیست ها

اعضای لیست می توانند از انواع داده مختلف باشند. در مثال زیر لیست sample_list1 تنها شامل اعداد صحیح و sample_list2 شامل رشته، عدد ممیز شناور و عدد صحیح است. لیست sample_list3 نیز به صورت تو درتو است که لیست درونی اول تنها شامل اعداد صحصح و لیست درونی دوم شامل انواع مختلف است.

در سه حالت بالا به صورت صریح سه متغیر از نوع لیست مقدار دهی اولیه شده اند ولی همانطور که گفته شد خروجی برخی از توابع به صورت لیست برگشت داده می شود و به صورت غیر صریح متغیری که خروجی تابع را ذخیره می کند از نوع لیست ایجاد خواهد شد. با اختصاص یک متغیر نوع لیست به متغیر دیگر، این متغیر نیز از نوع لیست و برابر با لیست اولیه خواهد بود. در کد زیر لیست new_list از اختصاص لیست sample_list1 به وجود می آید و اعضای آن دقیقا برابر با sample_list1 خواهد بود.

همانطور که گفته شد خروجی بعضی از توابع لیست خواهد بود. تابع ()range یکی از این توابع است که نتیجه آن ایجاد یک لیست خواهد بود. به طور مثال برای ایجاد یک لیست از اعداد ۱ تا ۱۰۰۱ می توان از قطعه کد زیر استفاده کرد.

اندیس در لیست ها

هر عنصر درون لیست دارای یک اندیس منحصر به فرد است و شماره اندیس ها از صفر شروع می شوند. اگر طول لیست را n فرض کنیم، شماره اندیس اول عدد صفر و شماره آخرین اندیس عدد n-1 خواهد بود. بنابراین اگر طول یک لیست برابر ۱۰ باشد به این معنی است که :

  • لیست دارای ۱۰ عنصر است.
  • اولین عنصر درون لیست دارای اندیس صفر است
  • آخرین عنصر درون لیست دارای اندیس ۹ است.

از تابع ()len می توان برای پیدا کردن اندازه یک لیست استفاده کرد. این تابع به عنوان ورودی یک متغیر را دریافت می کند و به عنوان خروجی اندازه آنرا بر می گرداند. بنابراین از این تابع می توان اینگونه نتیجه گرفت که اندیس آخرین عنصر درون لیست برابر با len() – 1 است.

مثال ۱ – اولین و آخرین عنصر درون لیست sample_list1 را پیدا کنید.

دسترسی به عناصر درون لیست های تو در تو به صورت چند بعدی است. به طور مثال لیست sample_list3 دارای ۲ زیر لیست است. اولین زیر لیست به معنی اولین عنصر است و اندیس صفر را دارد و زیر لیست دوم به معنی عنصر دوم است و اندیس ۱ را دارد. بنابراین برای نمایس اولین عنصر و دومین عنصر از کدهای زیر استفاده می کنیم.

می توان به صورت چند بعدی نیز به عناصر درون لیست تو در تو نیز دسترسی داشت. به طور مثال برای دسترسی به اولین عنصر در اولین زیر لیست باید از کد زیر استفاده کرد.

و برای دسترسی به اولین عنصر از دومین زیر لیست باید از کد زیر استفاده کرد.

مثال ۲ – سومین عنصر از اولین زیر لیست را چاپ کنید. عنصر سوم دارای اندیس ۲ و اولین زیر لیست دارای اندیس صفر است.

بنابراین اولین بعد در کدهای بالا معرف زیر لیست و دومین بعد نیز معرف اندیس مربوط به عناصر درون زیر لیست است. اگر خود زیر لیست های درون یک لیست نیز به صورت تو در تو باشند، حالت چند بعدی می تواند گسترش پیدا کند. لیست sample_list4 نمونه ای از این لیست را نشان می دهد.

اسلایس بندی لیست ها

با اسلایس بندی (Slicing) می توان عناصر (Elements) درون یک رشته، لیست، دیکشنری و تاپل را استخراج (Extract) کرد. فرمت کلی اسلایس بندی به صورت زیر است. استخراج داده ها از start شروع می شود و تا قبل از stop ادامه دارد.

[variable_name[start:stop:step

مثال ۳ – کل لیست را توسط اسلایس بندی نمایش دهید. برای نمایش کل لیست توسط اسلایس بندی از کدهای زیر استفاده می شود. حالت اول یعنی تمامی عناصر درون لیست نشان داده شود و حالت دوم یعنی از اولین اندیس تا آخرین اندیس نشان داده شود.

قطعه کد زیر مثال های دیگری از اسلایس بندی را نشان می دهند. حالت اول از دومین عنصر تا پنجمین عنصر را نمایش می دهد. حالت دوم از عدد ۱- برای استخراج آخرین عنصر و در حالت سوم از عدد ۲- برای استخراج یکی مانده به آخرین عنصر درون لیست استفاده می شود.

حالت دیگر برای نمایش آخرین عنصر درون یک لیست استفاده از حالت زیر است. به عبارتی در حالت زیر می خواهیم از آخرین عنصر درون لیست را استخراج کنیم که چون ۱- خود آخرین عنصر است، پس معادل نوشتن [1-]  است.

توابع پایتون برای کار با لیست ها

۱ – مقدار دهی کردن لیست ها

به جز دو روش بالا (مقدار دهی اولیه و خروجی توابع)، پایتون برای لیست ها توابع ()append و ()insert را فراهم کرده تا بتوان به لیست ها مقداری را اضافه کرد. تابع ()append یک ورودی را دریافت می کند و آنرا به انهای لیست اضافه می کند. قطعه کد زیر یک ورودی را از کاربر دریافت و سپس آنرا به تابع ()append ارسال می کند و تابع نیز آنرا به انتهای لیست اضافه می کند.

 تابع ()insert به عنوان آرگومان اول عدد اندیس برای درج آیتم جدید و به عنوان آرگومان دوم به عنوان آیتم جدید را دریافت می کند و سپس آیتم جدید را در محل تعیین شده درج می کند. قطعه کد زیر دو ورودی از کاربر دریافت می کند. ورودی اول در متغیر new_item که برابر با خود آیتم جدید و ورودی دوم در متغیر index که برابر با اندیس مورد است.

۲ – حذف کردن از لیست ها

تابع ()remove یک آیتم را به عنوان ورودی دریافت و سپس آن آیتم را از درون لیست حذف می کند. کد زیر نمونه مثالی را نشان می دهد.

مطابق کد ۱۵ چهار بار عدد ۱۰۰ در لیست تکرار شده است ولی در خط ۳ و با استفاده از تابع ()remove فقط اولین عدد ۱۰۰ که پیدا شود از درون لیست حذف خواهد شد.

۳ – پیدا کردن تعداد آیتم در لیست

تابع ()count برای لیست ها تعداد یک ایتم را مشخص می کند. این تابع یک ورودی دریافت می کند و به عنوان خروجی تعداد تکرار آن آیتم را در لیست بر می گرداند. قطعه کد زیر یک نمونه مثال را نشان می دهد.

۴ – پیدا کردن اندیس آیتم در لیست

تابع ()index یک آیتم را به عنوان ورودی دریافت می کند و سپس شماره اندیس مربوط به آنرا در لیست به عنوان خروجی بر می گرداند. مطالق قطعه کد ۱۷ عدد ۱۰۰ چهار بار تکرار شده است و تابع ()index تنها اندیس اولین عدد ۱۰۰ که پیدا شده است را بر می گرداند.

مثال ۴ – تمامی آیتم های درون لیست را با حلقه for چاپ کنید. در قطعه کد ۱۸ متغیر item در حلقه for در هر لحظه به یک عنصر لیست اشاره می کند.