بازگشت به دوره

آموزش رایگان صفر تا صد پایتون (Python) به زبان ساده

0% تکمیل‌شده
0/0 مرحله
  1. معرفی پایتون
  2. شروع کار با پایتون
  3. دستور زبان پایتون (Python Syntax)
  4. توضیح کامنت‌ها در پایتون
  5. متغیرها در پایتون
  6. نام‌های متغیر در پایتون
  7. معرفی متغیرها در پایتون و اختصاص چندین مقدار به آن‌ها
  8. معرفی متغیرها در خروجی با استفاده از پایتون
  9. متغیرهای سراسری (Global Variables) در پایتون
  10. انواع داده‌ها در پایتون
  11. انواع اعداد در پایتون
  12. تبدیل نوع داده در پایتون (Python Casting)
  13. رشته‌ها در پایتون (Python Strings)
  14. برش دادن رشته‌ها در پایتون (Python - Slicing Strings)
  15. تغییر رشته‌ها در پایتون
  16. ترکیب رشته‌ها در پایتون (String Concatenation)
  17. آشنایی با فرمت‌بندی رشته‌ها در پایتون
  18. کاراکترهای Escape در پایتون
  19. مقدمه‌ای بر بولی‌ها (Booleans) در پایتون
  20. عملگرها در پایتون
  21. لیست‌ها در پایتون
  22. دسترسی به آیتم‌های لیست در پایتون
  23. تغییر مقدار آیتم‌های لیست در پایتون
  24. افزودن آیتم به لیست در پایتون
  25. حذف آیتم‌ها از لیست در پایتون
  26. حلقه زدن در لیست‌ها در پایتون
  27. معرفی List Comprehension در پایتون
  28. مرتب‌سازی لیست‌ها در پایتون
  29. کپی کردن لیست‌ها در پایتون
  30. اتصال (Join) لیست‌ها در پایتون
  31. آشنایی با Tuple در پایتون
  32. دسترسی به آیتم‌های یک Tuple در پایتون
  33. بروزرسانی Tuple در پایتون
  34. باز کردن (Unpacking) Tuple در پایتون
  35. حلقه‌ها در Tupleها در پایتون
  36. آموزش ترکیب و تکرار تاپل‌ها در پایتون (Join Tuples)
  37. مجموعه‌ها (Set) در پایتون
  38. دسترسی به آیتم‌های مجموعه (Set) در پایتون
  39. افزودن آیتم به Set در پایتون
  40. حذف آیتم‌ها از Set در Python
  41. حلقه در مجموعه‌ها (Set) در پایتون
  42. روش‌های ترکیب مجموعه‌ها در پایتون (Join Sets)
  43. دیکشنری‌ها در پایتون
  44. دسترسی به آیتم‌های دیکشنری در پایتون
  45. تغییر مقادیر دیکشنری در پایتون
  46. اضافه کردن آیتم‌ها به دیکشنری در پایتون
  47. حذف آیتم‌ها از دیکشنری در پایتون
  48. استفاده از حلقه‌ها در دیکشنری‌ها در پایتون
  49. کپی کردن دیکشنری در پایتون
  50. دیکشنری‌های تو در تو در پایتون (Nested Dictionaries)
  51. شرط‌ها و دستور If در پایتون
  52. حلقه‌های while در پایتون
  53. حلقه‌های for در پایتون
  54. توابع در پایتون
  55. معرفی فانکشن‌های لامبدا در پایتون
  56. آرایه‌ها (Arrays) در پایتون
  57. کلاس‌ها و اشیا در پایتون
  58. وراثت (Inheritance) در پایتون
  59. ایتریتور (یکی یکی پیش رفتن) در پایتون
  60. چندریختی (Polymorphism) در پایتون
  61. محدوده (Scope) در پایتون
  62. ماژول در پایتون چیست؟
  63. کار با تاریخ در پایتون
  64. ریاضیات در پایتون
  65. JSON در پایتون به زبان ساده
  66. عبارات منظم (RegEx) در پایتون
  67. Python PIP
  68. معرفی Try-Except در پایتون
  69. ورودی کاربر در پایتون
  70. فرمت‌بندی رشته‌ها در پایتون

ایتریتور یک شیء با مجموعه‌ای قابل شمارش از مقادیر است. می‌توانیم به مقادیر آن یکی یکی دسترسی داشته باشیم. در پایتون، یک ایتریتور کلاسی است که از دو متد __iter__() و __next__() پیروی می‌کند.


تفاوت ایتریتور و آیترابل (Iterable)

مجموعه‌هایی مثل list (لیست)، tuple (تاپل)، dictionary (دیکشنری) و set (مجموعه) همه iterable هستند، یعنی می‌توانیم از آنها یک iterator بسازیم. مهم‌ترین نکته اینجاست که همه iterableها متد iter() را دارند که یک iterator تولید می‌کند.

مثال: گرفتن iterator از tuple

mytuple = ("apple", "banana", "cherry")
myit = iter(mytuple)

print(next(myit)) # apple
print(next(myit)) # banana
print(next(myit)) # cherry

مثال: گرفتن iterator از string

mystr = "banana"
myit = iter(mystr)

print(next(myit)) # b
print(next(myit)) # a
print(next(myit)) # n

مرور بر ایتریتور با for loop

به‌جای استفاده از next() می‌توانیم از یک حلقه for برای مرور روی iterator استفاده کنیم.

مثال: مرور بر tuple

mytuple = ("apple", "banana", "cherry")
for x in mytuple:
  print(x)

یک ایتریتور خودمان بسازیم!

برای ساخت یک iterator خودمان، باید دو متد __iter__() و __next__() را در یک کلاس تعریف کنیم.

مثال: ایتریتور شمارنده اعداد

class MyNumbers:
    def __iter__(self):
        self.a = 1
        return self

    def __next__(self):
        x = self.a
        self.a += 1
        return x

myclass = MyNumbers()
myiter = iter(myclass)

print(next(myiter)) # 1
print(next(myiter)) # 2
print(next(myiter)) # 3

متوقف کردن یک ایتریتور

اگر بخواهیم پس از تعداد مشخصی مقدار StopIteration رخ دهد، می‌توانیم در __next__() این مورد را کنترل کنیم.

مثال: متوقف کردن ایتریتور پس از 5 مقدار

class MyNumbers:
    def __iter__(self):
        self.a = 1
        return self

    def __next__(self):
        if self.a > 5:
            raise StopIteration
        x = self.a
        self.a += 1
        return x

myclass = MyNumbers()
myiter = iter(myclass)

for x in myiter:
    print(x)  # 1 2 3 4 5

جمع‌بندی

  • iterable ها شامل list، tuple، dict و set هستند.
  • iterator یک شیء است که دارای __iter__() و __next__() است.
  • for loop به‌طور خودکار از iterator استفاده می‌کند.
  • می‌توانیم iterator خودمان را با یک کلاس سفارشی‌سازی کنیم.
  • با StopIteration می‌توانیم مقداردهی را متوقف کنیم.