پیمایش لیست با حلقه در پایتون

Please login to bookmark Close

پیمایش لیست با حلقه

در واقع، در این درس پیمایش لیست با حلقه را از پایه و با مثال یاد می‌گیرید.

بنابراین در درس قبل برای دیدن هر عنصر، ایندکسش را دستی می‌نوشتید. این روش برای چهار عنصر قابل تحمل است، ولی برای لیستی که هزار عضو دارد یا تعداد اعضایش از قبل معلوم نیست، عملاً بی‌فایده است.

همچنین، اینجاست که حلقه‌ی for دقیقاً به درد می‌خورد.

ساده‌ترین شکل پیمایش

fruits = ["سیب", "موز", "پرتقال"]

for fruit in fruits:
    print(fruit)
سیب
موز
پرتقال

به این ترتیب، این خط را دقیق بخوانید: for fruit in fruits. پایتون در هر دور، یک عنصر از fruits برمی‌دارد و داخل متغیر fruit می‌گذارد، بعد بلوک را اجرا می‌کند.

علاوه بر این، نام fruit را خودتان انتخاب می‌کنید و هیچ معنای خاصی برای پایتون ندارد. ولی اسم معنادار بگذارید؛ کسی که شش ماه بعد کد را می‌خواند ممکن است خودتان باشید.

  fruits = ["سیب", "موز", "پرتقال"]

  دور ۱:   fruit ◄── "سیب"       →  print
  دور ۲:   fruit ◄── "موز"       →  print
  دور ۳:   fruit ◄── "پرتقال"     →  print
                │
                ▼
         لیست تمام شد → خروج از حلقه

وقتی شماره‌ی عنصر را هم لازم دارید

گاهی فقط خود عنصر کافی نیست و می‌خواهید بدانید چندمین عنصر است. تازه‌کارها معمولاً این کار را می‌کنند:

index = 0
for fruit in fruits:
    print(index, fruit)
    index = index + 1

کار می‌کند، ولی پایتون برای همین کار ابزار دارد:

for index, fruit in enumerate(fruits):
    print(index, fruit)
0 سیب
1 موز
2 پرتقال

اگر می‌خواهید شمارش از یک شروع شود:

for index, fruit in enumerate(fruits, start=1):
    print(index, fruit)

پیمایش همزمان دو لیست

names = ["علی", "زهرا", "رضا"]
ages = [18, 20, 22]

for name, age in zip(names, ages):
    print(name, age)
علی 18
زهرا 20
رضا 22

تابع zip دو لیست را دوشادوش هم حرکت می‌دهد. اگر طولشان برابر نباشد، به محض تمام شدن کوتاه‌تر، کار تمام می‌شود.

فیلتر کردن حین پیمایش

ترکیب حلقه و شرط، همان جایی است که درس‌های قبلی کنار هم معنا پیدا می‌کنند:

numbers = [4, 7, 10, 13, 16]

for number in numbers:
    if number % 2 == 0:
        print(number, "زوج است")

اشتباهات رایج

حذف عنصر حین پیمایش

numbers = [1, 2, 3, 4]

for number in numbers:
    if number % 2 == 0:
        numbers.remove(number)

print(numbers)
[1, 3]

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

numbers = [1, 2, 3, 4]
odd_numbers = []

for number in numbers:
    if number % 2 != 0:
        odd_numbers.append(number)

print(odd_numbers)

استفاده از متغیر حلقه بعد از پایان حلقه

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

جمع‌بندی

برای پیمایش لیست، مستقیم روی خود لیست حرکت کنید نه روی ایندکس‌ها. اگر شماره لازم دارید enumerate و اگر دو لیست را همزمان می‌خواهید zip.

در درس بعدی سراغ توابعی می‌رویم که خود لیست در اختیارتان می‌گذارد و خیلی از این حلقه‌ها را غیرلازم می‌کنند.

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

این درس بخشی از دوره آموزش پایتون مقدماتی است.

Please login to bookmark Close
پیشرفت شما در «دوره آموزش پایتون مقدماتی» (46%)
نظرات

دیدگاهتان را بنویسید

46%
پیشرفت

سرفصل دوره

فهرست مطالب

سرفصل دوره

تمرین

این قسمت تمرین ندارد!

پاسخ تمرین ها

هنوز برای تمرین‌های این قسمت پاسخی ثبت نشده است!

اشتراک گذاری

چرا بهتره از فیلترشکن استفاده کنید؟

من همه ویدئو ها و پادکست های کُدباز رو توی یوتیوب و ساندکلود و پلتفرم هایی آپلود می‌کنم که اغلب فیلتر هستند.

اغلب آموزش‌ها ویدئو و پادکست دارند. پس اگر می‌خواهید از محتوای سایت بیشترین استفاده رو ببرید نیاز به فیلتر شکن دارید.

توجه داشته باشید که برای خرید از فروشگاه بهتره فیلتر شکن رو خاموش کنید.

تنظیمات

انتخاب زبان
تغییر تم