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

سرور مجازی NVMe

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

0 2
زمان لازم برای مطالعه: 3 دقیقه


معرفی

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

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

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

تمام عملیاتی که در پاراگراف آخر ذکر کردیم را می توان با داخلی انجام داد index() تابع. نحو این تابع است index(element(, start(, end))).

این element پارامتر به طور طبیعی عنصر مورد نظر ما را نشان می دهد. این start و end پارامترها اختیاری هستند و نشان دهنده محدوده شاخص هایی هستند که در آن به دنبال آن می گردیم element.

مقدار پیش فرض برای start است 0 (جستجو از ابتدا)، و مقدار پیش فرض برای end تعداد عناصر موجود در لیست است (جستجو تا انتهای لیست).

تابع موقعیت اول را برمی گرداند element در لیستی که می تواند پیدا کند، صرف نظر از اینکه چند عنصر مساوی بعد از اولین اتفاق وجود دارد.

پیدا کردن اولین وقوع یک عنصر

با استفاده از index() بدون تعیین هیچ مقداری برای start و end اولین وقوع را به ما خواهد داد element ما به دنبال:

my_list = ('a', 'b', 'c', 'd', 'e', '1', '2', '3', 'b')

first_occurrence = my_list.index('b')
print("First occurrence of 'b' in the list: ", first_occurrence)

که خروجی مورد انتظار را به ما می دهد:

First occurrence of 'b' in the list: 1

یافتن تمام رخدادهای یک عنصر

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

به عنوان مثال، بیایید بگوییم که اولین رخداد یک عنصر را در شاخص انجام می دهیم 3. برای یافتن مورد بعدی، باید جستجوی خود را برای اولین ظاهر آن عنصر پس از فهرست ادامه دهیم 3. ما این را تکرار می کنیم process، تغییر مکان شروع جستجوی ما، تا زمانی که موارد جدیدی از عنصر را پیدا کنیم:

my_list = ('b', 'a', 2, 'n', False, 'a', 'n', 'a')

all_occurrences = ()
last_found_index = -1
element_found = True

while element_found:
    try:
        last_found_index = my_list.index('a', last_found_index + 1)
        all_occurrences.append(last_found_index)
    except ValueError:
        element_found = False
    
if len(all_occurrences) == 0:
    print("The element wasn't found in the list")
else:
    print("The element was found at: " + str(all_occurrences))

اجرای این کد به ما می دهد:

The element was found at: (1, 5, 7)

مجبور شدیم از الف استفاده کنیم try مسدود کردن اینجا، از index() تابع زمانی که نمی تواند مورد مشخص شده را پیدا کند، خطا می دهد element در محدوده داده شده این ممکن است برای توسعه دهندگانی که بیشتر به زبان های دیگر عادت دارند غیرمعمول باشد، زیرا معمولاً توابعی مانند این ها برمی گردند -1/null هنگامی که عنصر را نمی توان یافت.

با این حال، در پایتون باید مراقب باشیم و از a استفاده کنیم try هنگامی که از این تابع استفاده می کنیم مسدود کنید.

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

my_list = ('b', 'a', 2, 'n', False, 'a', 'n', 'a')

all_occurrences = (index for index, element in enumerate(my_list) if element == 'a')

print("The element was found at: " + str(all_occurrences))

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

پیدا کردن آخرین وقوع یک عنصر

اگر می خواهید آخرین رخداد یک عنصر را در لیست پیدا کنید، دو روش وجود دارد که می توانید با آن استفاده کنید index() تابع:

  • لیست را معکوس کنید و اولین مورد را در لیست معکوس جستجو کنید
  • تمام رخدادهای عنصر را مرور کنید و فقط آخرین رخداد را پیگیری کنید

در مورد رویکرد اول، اگر اولین وقوع آن را می دانستیم element در یک لیست معکوس، می‌توانیم موقعیت آخرین رخداد را در لیست اصلی پیدا کنیم. به طور دقیق تر، می توانیم این کار را با تفریق انجام دهیم reversed_list_index - 1 از طول لیست اصلی:

my_list = ('b', 'a', 2, 'n', False, 'a', 'n', 'a')

reversed_list_index = my_list(::-1).index('n')



original_list_index = len(my_list) - 1 - reversed_list_index

print(original_list_index)

که خروجی مورد نظر را به ما می دهد:

6

در مورد رویکرد دوم، می‌توانیم کدی را که برای یافتن همه رخدادها استفاده می‌کردیم، تغییر دهیم و فقط آخرین رخدادی را که پیدا کردیم را پیگیری کنیم:

my_list = ('b', 'a', 2, 'n', False, 'a', 'n', 'a')

last_occurrence = -1
element_found = True

while element_found:
    try:
        last_occurrence = my_list.index('n', last_occurrence + 1)
    except ValueError:
        element_found = False
    
if last_occurrence == -1:
    print("The element wasn't found in the list")
else:
    print("The last occurrence of the element is at: ", last_occurrence)

که همان خروجی را به ما می دهد:

6

نتیجه

ما نگاهی به برخی از رایج ترین کاربردها انداخته ایم index() عملکرد، و روش اجتناب از آن در برخی موارد.

رفتار غیرعادی بالقوه را حفظ کنید index() عملکرد در ذهن، جایی که به جای بازگشت، خطا می اندازد -1/None وقتی عنصری در لیست یافت نمی شود.

(برچسب‌ها به ترجمه)# python



منتشر شده در 1403-01-15 16:29:03

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

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

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