از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
پایتون: فهرست یک آیتم را در لیست بررسی کنید
سرفصلهای مطلب
معرفی
لیست ها در مقایسه با انواع داده های دیگر به دلیل همه کاره بودن آنها به روش های مختلف مفید هستند. در این مقاله نگاهی به یکی از رایجترین عملیاتها با لیست خواهیم داشت – یافتن شاخص یک عنصر.
ما به سناریوهای مختلف یافتن یک عنصر یعنی یافتن اولین، آخرین و همه موارد یک عنصر نگاهی خواهیم داشت. و همچنین زمانی که عنصر مورد نظر ما وجود نداشته باشد چه اتفاقی می افتد.
با استفاده از فهرست مطالب() تابع
تمام عملیاتی که در پاراگراف آخر ذکر کردیم را می توان با داخلی انجام داد 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