وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

فهرست یک آیتم را در لیست در پایتون پیدا کنید

0 15
زمان لازم برای مطالعه: 4 دقیقه


معرفی

در این بایت می‌خواهیم به یکی از رایج‌ترین کارهایی که می‌توانید با یک لیست انجام دهید، نگاهی بیندازیم: پیدا کردن فهرست یک آیتم. خوشبختانه، این معمولا یک کار بسیار ساده است – اما چند مشکل و تفاوت های ظریف وجود دارد که باید از آنها آگاه باشید. پس بیایید شروع کنیم!

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

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

fruits = ('apple', 'banana', 'cherry', 'date', 'elderberry')

در این لیست، “سیب” در شاخص 0، “موز” در شاخص 1، و غیره است. به یاد داشته باشید، پایتون از نمایه سازی مبتنی بر صفر استفاده می کند، به این معنی که اولین عنصر در شاخص 0 است نه 1.

چگونه نمایه یک آیتم را پیدا کنیم

بنابراین، چگونه نمایه یک آیتم خاص را در یک لیست پیدا کنیم؟ پایتون چند راه مختلف برای انجام این کار ارائه می‌کند، و ما قصد داریم به دو مورد از آنها نگاه کنیم: index() روش و enumerate() تابع.

با استفاده از فهرست مطالب() روش

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

fruits = ('apple', 'banana', 'cherry', 'date', 'elderberry')
index = fruits.index('cherry')
print(index)

وقتی این کد را اجرا می کنید، خروجی آن به صورت زیر خواهد بود:

2

را index() متد شاخص اولین وقوع مورد را برمی گرداند. اگر مورد در لیست نباشد، یک علامت را افزایش می دهد ValueError.

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

پیشنهاد می‌کنیم بخوانید:  توابع لامبدا در پایتون

با استفاده از شمارش () تابع

در پایتون، enumerate() تابع یک شمارنده به یک تکرار اضافه می کند و آن را به عنوان یک شئ enumerate برمی گرداند. این می تواند زمانی مفید باشد که می خواهید نمایه یک مورد را در یک لیست دریافت کنید. بیایید ببینیم چگونه کار می کند:

fruits = ('apple', 'banana', 'cherry', 'date')

for i, fruit in enumerate(fruits):
    print(f"The index of {fruit} is {i}")

این خروجی خواهد داشت:

The index of apple is 0
The index of banana is 1
The index of cherry is 2
The index of date is 3

را enumerate() تابع کد ما را پاک‌تر و پایتونیک‌تر می‌کند. به جای افزایش دستی شمارنده، به پایتون اجازه می دهیم آن را برای ما مدیریت کند.

برای پیدا کردن یک مورد، ممکن است کاری شبیه به این انجام دهیم:

fruits = ('apple', 'banana', 'cherry', 'date')

idx = None
for i, fruit in enumerate(fruits):
    if fruit == 'cherry':
        idx = i
        break

print(idx)

دوباره، این کد چاپ می شود 2 به کنسول

این روش زمانی مفید است که بررسی یک مورد خاص دشوارتر باشد. به عنوان مثال، شما نمی توانید به راحتی دیکته ای با آن پیدا کنید index روش. در حالی که با enumerate، می توانید به راحتی کد سفارشی خود را برای بررسی مورد مورد نظر خود پیاده سازی کنید.

مثلا:

people = (
    {'name': 'John', 'age': 27},
    {'name': 'Alice', 'age': 23},
    {'name': 'Bob', 'age': 32},
    {'name': 'Lisa', 'age': 28},
)

idx = None
for i, person in enumerate(people):
    if person('name') == 'Lisa':
        idx = i
        break

print(idx)
3

رسیدگی به خطاها

هنگام کار با لیست ها و شاخص ها در پایتون، ممکن است با دو خطای رایج روبرو شوید: IndexError: list index out of range و ValueError: item is not in list. بیایید نگاهی دقیق تر به هر یک از این موارد بیندازیم.

IndexError: فهرست فهرست خارج از محدوده

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

fruits = ('apple', 'banana', 'cherry')
print(fruits(3))

این منجر به:

IndexError: list index out of range

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

پیشنهاد می‌کنیم بخوانید:  نحوه خودکارسازی صادرات داده ها و گزارش های ایمیل با پایتون - راهنمای گام به گام

ValueError: مورد در لیست نیست

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

fruits = ('apple', 'banana', 'cherry')
print(fruits.index('date'))

این منجر به:

ValueError: 'date' is not in list

برای جلوگیری از این خطا می توانید از in کلمه کلیدی برای بررسی وجود آیتم در لیست قبل از تلاش برای یافتن فهرست آن.

fruits = ('apple', 'banana', 'cherry')
if 'date' in fruits:
    print(fruits.index('date'))
else:
    print("'date' is not in the list.")

این خروجی خواهد داشت:

'date' is not in the list.

به یاد داشته باشید، همیشه باید سعی کنید این خطاها را به خوبی در کد خود مدیریت کنید. این نه تنها از خراب شدن برنامه شما جلوگیری می کند، بلکه تجربه کاربری را نیز بهبود می بخشد.

پیدا کردن شاخص همه رخدادهای یک مورد

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

لیست زیر را در نظر بگیرید:

numbers = (1, 2, 3, 2, 4, 2, 5, 6, 2, 7)

در این لیست، شماره 2 چهار بار ظاهر می شود بیایید همه موارد آن را پیدا کنیم:

indices = (i for i, x in enumerate(numbers) if x == 2)
print(indices)

این اسکریپت خروجی خواهد داشت:

(1, 3, 5, 8)

در اینجا، ما از درک لیست برای ایجاد یک لیست جدید استفاده می کنیم (indices). را enumerate() تابع برای برگرداندن هر دو شاخص و مقدار از numbers. اگر مقدار (x) برابر است با 2، شاخص (i) به اضافه می شود indices فهرست

نتیجه

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





منتشر شده در 1402-12-26 19:38:04

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید