تابع «len» یکی از ابزارهای کاربردی پایتون است. این تابع سرعت اجرای بالایی دارد. از آن برای شمردن عناصر موجود در شیء‌های مشخص شده استفاده می‌شود. از تابع len در پایتون بر روی داده‌هایی با انواع مختلف کار می‌کند. برای مثال می‌توان به رشته‌ها، لیست‌ها، دیکشنری‌ها و حتی اشیاء تولید شده توسط کتابخانه‌های اختصاصی مانند «NumPy» و «پانداس» (Pandas) هم اشاره کرد. درک روش کار تابع len() با اشیاء مختلف به برنامه نویسان برای نوشتن کدهای بهتر و کوتاه‌تر کمک می‌کند. از تابع len() می‌توان برای شمردن اشیا درون کلاس‌های پایتون هم استفاده کرد. استفاده از تابع len() بر روی انواع داده درونی بسیار ساده است. اگر برنامه نویسان روش صحیح استفاده از تابع len() را یاد بگیرند، برنامه‌هایی با انعطاف‌پذیری و استحکام بیشتر می‌نویسند.

آنچه در این مطلب می‌آموزید:

  • خواهید دانست که متد len در پایتون بر روی چه ساختارهای داده‌ای کار می‌کند.

  • با استفاده از چند مثال روش استفاده از متد len را بر روی لیست، تاپل و دیکشنری یاد می‌گیرید.

  • روش تعریف کردن متد __len__ را برای استفاده از تابع len در کلاس‌ها می‌آموزید.

  • می‌آموزید که چگونه از تابع len در حلقه for استفاده کنید.

  • روش ترکیب کردن تابع len و عبارت‌های شرطی را یاد می‌گیرید.

  • با مهم‌ترین خطاهای استثنا در زمان استفاده از تابع len آشنا می‌شوید.

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

در این مطلب از مجله فرادرس با تابع len در پایتون آشنا می‌شویم. ابتدا عملکرد اصلی تابع len() را توضیح می‌دهیم. سپس با کمک چند مثال روش استفاده از آن را بر روی ساختارهای مانند لیست‌، رشته‌، تاپل و غیره بررسی می‌کنیم. در ادامه روش پیاده‌سازی و استفاده از متد __len__()  را در کلاس‌های تعریف شده توسط کاربر هم توضیح داده‌ایم. در نهایت هم انواع تکنیک‌های استفاده از این تابع را در شرایط گوناگون همراه با استثناهای مختلف بررسی می‌کنیم.

تابع len در پایتون چیست؟

تابع len به برنامه نویس کمک می‌کند تا تعداد عناصر درون ساختارهای پیمایش‌پذیر را محاسبه کند. فرقی نمی‌کند که با لیست‌های پایتون کار می‌کنیم یا تاپل یا حتی دیکشنری، تابع len می‌تواند عناصر موجود در این ساختارها را بشمارد. این تابع ابزار بسیار خوبی برای مدیریت اندازه مجموعه‌های داده در برنامه است.

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

یک مربع زرد به سه مستطیل آبی رنگ متصل شده است.
چند مورد از رایج‌ترین کاربرد‌های تابع len در پایتون

در کادر زیر،‌ سینتکس تابع len در پایتون را نوشته‌ایم.

همین‌طور که می‌بینید در سینتکس بالا فقط یک پارامتر به نام object  وجود دارد. این پارامتر همان شیئی است که باید تعداد عناصر درون آن شمرده شوند. اگر بخواهیم که از نتیجه کار این تابع استفاده کنیم، می‌توانیم آن را به همین‌ صورت به کار ببریم. برای مثال، کد print(len(object)) تعداد عنصر موجود در شیء object  را چاپ می‌کند. اما اگر بخواهیم نتیجه بدست آمده از آن را در چند جای مختلف استفاده کنیم، بهترین کار، ذخیره جواب این کد در یک متغیر است.

چند مثال درباره تابع len در پایتون

تابع len() انعطاف‌پذیری بسیار زیادی دارد. این تابع می‌تواند با ساختارهای مختلفی مانند لیست‌ها، تاپل‌ها و دیکشنری‌های پایتون کار بکند. در ادامه با پیاده‌سازی چند مثال مختلف، روش استفاده از تابع len() را بر روی این ساختارها بررسی کرده‌ایم.

استفاده از تابع len در پایتون بر روی ساختار لیست

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

آزمایشگاه پایتون و دو برنامه نویس در حال کار بر روی len در پایتون

فرض کنیم نام تمام دانش‌آموزان کلاس را در لیستی جمع‌آوری کرده‌ایم. اکنون می‌خواهیم تعداد دانش‌آموزان را از روی این لیست بدست بیاوریم.

بعد از اجرای کد بالا عدد 4  به عنوان خروجی در کنسول پایتون نمایش داده می‌شود. در فهرست پایین، کدهای بالا را توضیح داده‌ایم.

  1. در خط اول، لیستی به نام students  تعریف کردیم. در این لیست نام چهار دانش‌آموز نوشته شده است.
  2. در خط ۳ از تابع len(students)  برای بدست آوردن تعداد دانش‌آموزان استفاده کرده‌ایم.
  3. در خروجی برنامه عدد 4  چاپ می‌شود. این عدد، تعداد واقعی نام‌های ذخیره شده در لیست را نشان می‌دهد.

استفاه از تابع len در پایتون بر روی ساختار تاپل

در این بخش از مطلب، روش استفاه از تابع len در پایتون بر روی ساختار تاپل را بررسی می‌کنیم. تاپل در پایتون شبیه به لیست‌ است. با این تفاوت که ساختار آن «غیرقابل تغییر» (Immutable) است. یعنی آن که بعد از ساختن تاپل دیگر نمی‌توانیم محتویات آن را تغییر بدهیم.

در کادر زیر، مثالی را درباره استفاه از تابع len() بر روی تاپل بررسی کرده‌ایم.

بعد از اجرای کد بالا عدد 5  به عنوان خروجی در کنسول پایتون نمایش داده می‌شود. در پایین کدهای بالا را توضیح داده‌ایم.

  1. در خط اول، تاپلی به نام numbers  با ۵ عنصر مختلف ایجاد کردیم.
  2. در خط ۳ با استفاده از کد len(numbers)  تعداد عنصر موجود در تاپل را شمرده و در متغیر num_numbers قرار دادیم.
  3. در نهایت – خط ۴ – مقدار 5  در خروجی چاپ می‌شود.

استفاه از تابع len در پایتون بر روی دیکشنری

اکنون نوبت به بررسی روش استفاه از تابع len() در دیکشنری‌های پایتون رسیده است. دیکشنری به مجموعه‌ای از مقادیر گفته می‌شود که به صورت جفت‌های کلید-مقدار ذخیره می‌شوند. در مثال زیر، تابع len() تعداد جفت‌های کلید-مقدار را شمرده و در خروجی برمی‌‌گرداند.

بعد از اجرای کد بالا خروجی برابر با عدد 3  در کنسول پایتون نمایش داده می‌شود. در پایین کدهای بالا را توضیح داده‌ایم.

  1. در خط اول، دیکشنری به نام person  و با سه جفت، کلید‌-مقدار ساخته‌ایم.
  2. در خط سوم از کد len(person)  برای شمردن تعداد عناصر موجود در دیکشنری استفاده می‌کنیم.
  3. در آخر هم خروجی عدد 3  را نشان می‌دهد.

یاد گرفتن پایتون با کمک فرادرس

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

مجموعه آموزش برنامه نویسی پایتون Python – مقدماتی تا پیشرفته
با کلیک بر روی تصویر بالا می‌توانید به صفحه اصلی مجموعه فیلم‌های آموزش برنامه نویسی پایتون Python از مقدماتی تا پیشرفته هدایت شوید.

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

در بخش بعد، روش استفاده از تابع len() بر روی اشیاء سفارشی را بررسی کرده‌ایم.

استفاده از len در کلاس‌های تعریف شده توسط کاربر

برنامه نویسان می‌توانند از تابع len() برای شمارش اشیاء ساخته شده از روی کلاس‌های سفارشی هم استفاده کنند. برای انجام دادن این کار باید متد __len__()  در کلاس مورد نظر، تعریف شود. این متد، مقداری را با نوع عدد صحیح برمی‌گرداند. این عدد باید اندازه یا طول شیء را نشان بدهد.

در کادر زیر، روش ساخت کلاس سفارشی و تعریف متد __len__()  را با کمک مثال ساده‌ای بررسی کرده‌ایم.

بعد از اجرای کد بالا عدد 350  به عنوان خروجی در کنسول پایتون نمایش داده می‌شود. در فهرست پایین کدهای بالا را توضیح داده‌ایم.

  1. در خط ۱ تا ۶، کلاسی با نام Book  نوشتیم.
  2. از خط دو تا چهار، متد __init__  را تعریف کرده‌ایم. در این متد پارامترهای pages  و title  را به ترتیب برای مقداردهی اولیه به تیتر و تعداد صفحات کتاب، مشخص کردیم.
  3. سپس متد __len__()  تعریف شده است. منطق درون این متد را طوری نوشته‌ایم که تعداد صفحات داخل کتاب را به عنوان طول کتاب برگرداند.
  4. هر وقت کد len(my_book)  فراخوانی شود،‌ این کد از متد __len__()  استفاده می‌کند.
  5. در خروجی این مثال عدد 350  به عنوان تعداد صفحات کتاب برگشت داده شده است.

این مثال، نمونه خوبی است از روش استفاده تابع len() بر روی اشیاء تعریف شده توسط کاربر. بخصوص وقتی که بخواهیم به این اشیا ویژگی‌هایی مانند طول یا اندازه را بدهیم، استفاده از این متد بسیار مفید است. چنین اشیائی به سادگی با تابع len() در پایتون سازگار می‌شوند.

استفاده از متد len بر روی شیء خالی

هر وقت که از تابع len() بر روی اشیاء خالی استفاده کنید، نتیجه برابر با 0  می‌شود. زیرا اشیا خالی هیچ عنصری ندارند. بنابراین تابع len() هم نمی‌تواند چیزی را بشمارد.

به عنوان نمونه در کادر پایین از تابع len() بر روی شیئی خالی استفاده کرده‌ایم.

بعد از اجرای کد بالا مقدار 0  به عنوان خروجی در کنسول پایتون نمایش داده می‌شود. در پایین کدهای این مثال را توضیح داده‌ایم.

  1. در خط اول با استفاده از کروشه‌های باز و بسته []  لیست خالی به نام empty_list  ساختیم.
  2. در خط دوم، تابع len(empty_list)  را فراخوانی کردیم. این تابع تعداد عناصر نوشته شده در لیست را بررسی می‌کند. اما لیست خالی است. بنابراین مقدار 0  برگشت داده می‌شود.
  3. خروجی تابع print() عدد 0  را در کنسول پایتون نمایش می‌دهد.
متد len مانند یک دستگاه در حال شمارش عناصر موجود در بسته‌های مختلف است.

اکنون چند عنصر جدید به لیست اضافه می‌کنیم. سپس دوباره از تابع len() استفاده خواهیم کرد. مشاهده می‌کنید که تابع len() به صورت خودکار لیست را شمرده و مقدار نتیجه را به‌روزرسانی می‌کند.

بعد از اجرای کد بالا عدد 2  به عنوان خروجی در کنسول پایتون نمایش داده می‌شود. در فهرست زیر کدهای بالا را توضیح داده‌ایم. توجه کنید که برای اجرای کدهای بالا باید آن‌ها را در امتداد کدهای کادر قبلی بنویسید.

  1. ابتدا لیست خالی بود، بنابراین کد len(empty_list)  در خروجی مقدار 0  برگرداند.
  2. بعد از افزودن دو عنصر جدید، طول لیست تغییر کرده و برابر با 2  می‌شود.
  3. وقتی که برای بار دوم تابع len(empty_list)  فراخوانی شد، به درستی عناصر درون لیست را شمرد و در خروجی مقدار عدد 2  را برگشت داد.

برای مثال، گاهی از اوقات قبل از کار با ساختارهایی مانند لیست یا دیکشنری لازم است که تعداد عنصر موجود در این ساختارها بررسی شوند. یا اینکه بعد از به پایان رسیدن برنامه باید تغییرات صورت گرفته در تعداد عنصر‌ها را بدانیم. در چنین شرایطی استفاده از تابع len() بهترین گزینه است. این رفتار را می‌توان بر روی تمام ساختارهای پیمایش‌پذیر در پایتون انجام داد.

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

استفاده از تابع len در حلقه for

از تابع len() می‌توانیم در حلقه for نیز استفاده کنیم. استفاده از این تکنیک به برنامه نویس کمک می‌کند بر اساس تعداد عنصر موجود در هر ساختار، رفتار متفاوتی داشته باشد. برای مثال اگر به شماره اندیس هر عنصر نیاز داشته باشیم، این تکنیک کاربرد زیادی دارد. یا اینکه شاید بخواهیم تعداد دفعات اجرای حلقه را کنترل کنیم.

برای درک صحیح روش حل این مسئله بهتر است که با ساختار حلقه‌ هم آشنایی داشته باشید. در صورت نیاز، مشاهده فیلم رایگان آموزش رایگان پایتون – برنامه نویسی سریع و آسان در ۱۴۰ دقیقه + گواهینامه در فرادرس روش خوبی برای یادگیری استفاده از ساختارهای پایه در پایتون است. برای کمک به مخاطبان مجله، لینک این فیلم را در پایین نیز قرار داده‌ایم.

با بررسی مثال زیر، مطلب بالا را بهتر درک می‌کنید.

بعد از اجرای کد بالا خروجی زیر در کنسول پایتون نمایش داده می‌شود.

mathematica

Language at index 0: Python

Language at index 1: Java

Language at index 2: C++

Language at index 3: JavaScript

در فهرست پایین تمام کارهای انجام شده در کد را به صورت یک به یک نوشته‌ایم.

  1. تعریف لیست: ابتدا لیستی به نام languages  تعریف کردیم. این لیست شامل نام چند زبان برنامه نویسی مختلف است.
  2. استفاده از تابع len() همراه با range(): تابع len() تعداد عناصر موجود در لیست را شمرده و بر می‌گرداند. در اینجا تعداد عناصر برابر با 4  است. سپس تابع range() چند اندیس از 0  تا len(languages) – 1  تولید می‌کند.
  3. پیمایش با کمک اندیس‌ها: حلقه بر روی اندیس‌های ساخته شده پیمایش می‌کند. برنامه نویس با استفاده از اندیس مربوط به هر عنصر می‌تواند به آن عنصر در لیست دسترسی پیدا کند.
  4. چاپ نتیجه خروجی: در هربار گردش حلقه، شماره اندیس فعلی را همراه با عنصر متناظر آن چاپ می‌کنیم.
عبارت len در پایتون به رنگ قرمز و با نورپردازی نئونی در حال شمارش کاغذ‌های چیده شده بر روی هم است.

ترکیب تابع len و عبارت‌های شرطی

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

بعد از اجرای کد بالا خروجی زیر در کنسول پایتون نمایش داده می‌شود.

Python has more than 4 characters.

JavaScript has more than 4 characters.

در فهرست پایین تمام کارهای انجام شده در کد را به صورت یک به یک نوشته‌ایم.

  1. بررسی طول کلمات: در داخل حلقه for  کد len(languages[i])  وظیفه محاسبه طول تمام عناصر رشته‌ای درون لیست را بر عهده دارد.
  2. منطق شرطی: شرط نوشته شده در مقابل عبارت if – عبارت len(languages[i]) > 4  - بزرگتر بودن طول رشته از عدد 4  را بررسی می‌کند.
  3. چاپ نتیجه: اگر شرط نوشته شده درست باشد کد خط آخر نام مربوط به آن زبان را در خروجی چاپ می‌کند.

این مثال از تابع len() در پایتون نشان می‌دهد که استفاده از آن می‌تواند کارایی حلقه for  را بیشتر کند. مخصوصا در زمان انجام عملیات بر روی مجموعه‌های داده‌ای مانند لیست‌ها این افزایش کارایی بیشتر دیده می‌‌شود.

استفاده از فیلم های پروژه محور فرادرس برای پایتون

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

در ادامه، چند مورد از فیلم‌های پروژه‌محور پایتون را معرفی کرده‌ایم. در صورت تمایل با کلیک بر روی تصویر زیر می‌توانید به صفحه اصلی این مجموعه آموزشی هدایت شده و فیلم‌های پروژه‌محور بیشتری را نیز تماشا کنید.

مجموعه آموزش پروژه محور برنامه نویسی پایتون (Python)
با کلیک بر روی تصویر بالا می‌توانید به صفحه اصلی مجموعه فیلم‌های آموزش پروژه محور برنامه نویسی پایتون هدایت شوید.

در ادامه مطلب با انواع خطاهای استثنا در زمان استفاده از تابع len() در پایتون آشنا می‌شویم.

حالت‌های استثنا تابع len در پایتون

در این بخش از مطلب، چند سناریو مختلف را پیاده‌سازی می‌کنیم. در هر کدام از این سناریو‌ها تابع len() با یک مشکل روبه‌رو می‌شود.

البته این مشکلات با تکنیک‌های مربوط به مدیریت استثنا در پایتون مدیریت شده‌اند.

حالت‌های استثنا تابع len در پایتون
رایج‌ترین خطاهای استثنا در زمان کار با تابع len در پایتون

استفاده از len بر روی اشیاء غیرقابل پیمایش

تابع len() فقط بر روی اشیاء قابل پیمایش کار می‌کند. به عنوان مثال‌ می‌توانیم از ساختارهای لیست، تاپل و دیکشنری نام ببریم. استفاده از این تابع بر روی اشیاء‌ غیرقابل پیمایش مانند عدد صحیح – نوع Integer – باعث برخواستن خطای استثنای TypeError  می‌شود.

بعد از اجرای کد بالا خروجی زیر در کنسول پایتون نمایش داده می‌شود.

Error: object of type 'int' has no len()

همین‌طور که مشاهده می‌شود برای مدیریت این خطا و بقیه حالت‌های استثنا در این بخش از ساختار «Try-Except» در پایتون استفاده کرده‌ایم.

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

قبل از استفاده از تابع len() در کلاس‌های سفارشی لازم است که حتما متد __len__()  را تعریف کرده باشیم. اگر این متد را تعریف نکنیم، فراخوانی تابع len() بر روی آن کلاس مانند فراخوانی تابع len() بر روی اشیاء غیرقابل پیمایش است. بنابراین خطای TypeError  توسط مفسر پایتون اعلام می‌شود.

در کدهای زیر روش اعلام این خطا و مدیریت آن را بررسی کرده‌ایم.

بعد از اجرای کد بالا خروجی زیر در کنسول پایتون نمایش داده می‌شود.

Error: object of type 'MyClass' has no len()

استفاده از تابع len بر روی متغیر تعریف نشده

گاهی از اوقات ممکن است که در زمان کار، تعریف کردن متغیر خاصی را فراموش کرده باشیم. استفاده از تابع len() بر روی متغیرهای تعریف نشده باعث اعلام خطای NameError  می‌شود.

بعد از اجرای کد بالا خروجی زیر در کنسول پایتون نمایش داده می‌شود.

Error: name 'uninitialized_variable' is not defined

استفاده از تابع len بر روی Generator-ها

در زبان برنامه نویسی پایتون نمی‌توانیم از تابع len() به صورت مستقیم برروی Generator-ها استفاده کنیم. زیرا این ساختارها همه عناصر خود را در حافظه ذخیره نمی‌کنند. در کادر زیر با کمک مثال ساده‌ای این مسئله را بررسی کرده‌ایم.

بعد از اجرای کد بالا خروجی زیر در کنسول پایتون نمایش داده می‌شود.

Error: object of type 'generator' has no len()

جمع‌بندی

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

در این مطلب یادگرفتیم از تابع len() چگونه بر روی انواع داده درونی استفاده کنیم. روش کار با این تابع را بر روی کلاس‌های تعریف شده توسط کاربر هم آموختیم. اکنون می‌توانیم از تابع len() به خوبی در برنامه‌های خود استفاده کنیم. با تعریف متد __len__()  می‌توانیم از این تابع در کلاس‌های خودمان نیز استفاده کنیم.

source

توسط expressjs.ir