از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
روش دسترسی به ایندکس در پایتون برای حلقه
سرفصلهای مطلب
معرفی
پایتون یک زبان برنامه نویسی بسیار سطح بالا است و تمایل دارد از هر چیزی که از راه دور شبیه ساختار داده داخلی است دور شود. به همین دلیل، ما معمولاً برای دسترسی به عناصر آن به شاخص های یک لیست نیازی نداریم، با این حال، گاهی اوقات به شدت به آنها نیاز داریم.
در این مقاله به روش های مختلف می پردازیم روی روش دسترسی به ایندکس در حلقه for Python.
روش دسترسی به ایندکس در پایتون برای حلقه؟
ساده ترین و محبوب ترین روش برای دسترسی به شاخص عناصر در a برای حلقه این است که طول لیست را طی کنید و مقدار را افزایش دهید index
. در هر افزایش، به لیست دسترسی پیدا می کنیم روی که index
:
my_list = (3, 5, 4, 2, 2, 5, 5)
print("Indices and values in my_list:")
for index in range(len(my_list)):
print(index, my_list(index), end = "\n")
در اینجا، مانند آنچه معمولاً انجام میدهیم، فهرست را تکرار نمیکنیم. ما تکرار می کنیم از 0..len(my_list)
با index
. سپس، ما از این استفاده می کنیم index
متغیر برای دسترسی به عناصر لیست به ترتیب 0..n
، جایی که n
انتهای لیست است
این کد خروجی را تولید می کند:
Indices and values in my_list:
0 3
1 5
2 4
3 2
4 2
5 5
6 5
استفاده کردن شمارش ()
enumerate()
یک تابع داخلی پایتون است که زمانی که بخواهیم به مقادیر و شاخص های یک لیست دسترسی داشته باشیم بسیار مفید است. شایان ذکر است که این سریعترین و کارآمدترین روش برای به دست آوردن شاخص در a است برای حلقه
این روش یک شمارنده به یک تکرار اضافه می کند و آنها را با هم به عنوان یک شیء شمارش شده برمی گرداند. این شئ enumerate را می توان به راحتی با استفاده از a به لیست تبدیل کرد list()
سازنده این رایج ترین راه برای دسترسی همزمان به هر دو عنصر و شاخص آنها است.
حالا بیایید نگاهی به کدی بیندازیم که روش استفاده از این روش را نشان می دهد:
my_list = (3, 5, 4, 2, 2, 5, 5)
print("Indices and values in my_list:")
for index, value in enumerate(my_list):
print(list((index, value)))
این کد خروجی را تولید می کند:
Indices and values in my_list:
(0, 3)
(1, 5)
(2, 4)
(3, 2)
(4, 2)
(5, 5)
(6, 5)
کاری که ما در این مثال انجام دادیم این بود که هر مقدار در یک لیست را با شاخص مربوط به آن برشمردیم و یک شیء enumerate ایجاد کردیم. سپس، ما آن شئ enumerate را با استفاده از عبارت به لیست تبدیل کردیم list()
سازنده، و هر لیست را در خروجی استاندارد چاپ کرد.
علاوه بر این، می توانید تنظیم کنید start
آرگومان برای تغییر نمایه سازی در حال حاضر، مبتنی بر 0 است. بیایید آن را برای شروع تغییر دهیم 1
بجای:
my_list = (3, 5, 4, 2, 2, 5, 5)
print("Indices and values in my_list:")
for index, value in enumerate(my_list, start=1):
print(list((index, value)))
اکنون، این تولید می کند:
Indices and values in my_list:
(1, 3)
(2, 5)
(3, 4)
(4, 2)
(5, 2)
(6, 5)
(7, 5)
استفاده از لیست درک
آ درک لیست راهی برای تعریف و ایجاد لیست بر اساس است روی لیست های موجود معمولاً این روش سریعتر، ظریفتر و فشردهتر برای دستکاری فهرستها در مقایسه با توابع و for
حلقه ها
هر درک لیست در پایتون شامل این سه عنصر است:
- قابل تکرار – مجموعه ای که عناصری را می توانیم یکی یکی بازرسی کنیم
- عضو – مقدار یا شی در یک لیست (که قابل تکرار است)
- اصطلاح – می تواند هر عبارت معتبری باشد که مقداری را برمی گرداند (یک عضو، یک تکرار، یک فراخوانی به یک تابع…)
بیایید به مثال زیر نگاهی بیندازیم:
my_list = (1, 2, 3, 4, 5)
my_list_squared = (m*m for m in my_list)
print(my_list_squared)
این کد خروجی را تولید می کند:
(1, 4, 9, 16, 25)
در درک این فهرست، my_list
نشان دهنده قابل تکرار، m
نشان دهنده a عضو و m*m
نشان دهنده اصطلاح.
اکنون که فهمیدیم درک لیست چیست، میتوانیم از آن برای تکرار در لیست و دسترسی به شاخصها و مقادیر مربوطه آن استفاده کنیم. بیایید نگاهی به این مثال بیندازیم:
my_list = (3, 5, 4, 2, 2, 5, 5)
print("Indices and values in my_list:")
print((list((i, my_list(i))) for i in range(len(my_list))))
این کد خروجی را تولید می کند:
Indices and values in my_list:
((0, 3), (1, 5), (2, 4), (3, 2), (4, 2), (5, 5), (6, 5))
کاری که ما در این مثال انجام دادیم استفاده از list()
سازنده این سازنده هیچ آرگومان یا یک آرگومان واحد – یک تکرارپذیر نمی گیرد. این شامل هر شیئی است که می تواند دنباله ای (رشته، تاپل) یا مجموعه ای (مجموعه، فرهنگ لغت) باشد.
اگر هیچ پارامتری ارسال نشود، یک لیست خالی برمی گرداند و اگر یک تکرارپذیر به عنوان پارامتر ارسال شود، لیستی متشکل از موارد آن ایجاد می کند.
ما یک لیست از دو لیست عنصر را ایجاد کردیم که در قالب هستند (elementIndex, elementValue)
. این لیستهای دو عنصری با ارسال جفتها به آن ساخته شدند list()
سازنده، که سپس یک لیست معادل را تف کرد.
با این کار 7 لیست جداگانه حاوی ایندکس و مقدار متناظر آن در ایجاد می شود my_list
که چاپ خواهد شد
استفاده کردن zip()
این zip()
تابع دو یا چند پارامتر را می پذیرد که همگی باید قابل تکرار باشند.
یک شی زیپ را برمی گرداند – یک تکرار کننده از تاپل ها که در آن آیتم اول در هر تکرار کننده پاس شده با هم جفت می شود، آیتم دوم در هر تکرار کننده پاس شده با هم جفت می شود و به طور مشابه برای بقیه آنها:
list_a = (1, 2, 3)
list_b = ('A', 'B', 'C')
for elem1,elem2 in zip(list_a,list_b):
print((elem1,elem2))
با اجرای قطعه کد بالا، دریافت می کنیم:
(1, 'A')
(2, 'B')
(3, 'C')
طول تکرار کننده ای که این تابع برمی گرداند برابر است با طول کوچکترین پارامتر آن.
اکنون که روش عملکرد این تابع را توضیح دادیم، بیایید از آن برای حل وظیفه خود استفاده کنیم:
my_list = (3, 5, 4, 2, 2, 5, 5)
print ("Indices and values in my_list:")
for index, value in zip(range(len(my_list)), my_list):
print((index, value))
این کد خروجی را تولید می کند:
Indices and values in my_list:
(0, 3)
(1, 5)
(2, 4)
(3, 2)
(4, 2)
(5, 5)
(6, 5)
در این مثال، دنباله ای از اعداد را در محدوده از ارسال کردیم 0
به len(my_list)
به عنوان اولین پارامتر از zip()
عملکرد، و my_list
به عنوان پارامتر دوم آن این تابع هر شاخص را با مقدار متناظر آن جفت کرد و ما آنها را به صورت چند تایی با استفاده از a چاپ کردیم for
حلقه
اگر بخواهیم این تاپل ها را به لیست تبدیل کنیم، از آن استفاده می کنیم list()
سازنده، و ما print
تابع به شکل زیر خواهد بود:
print(list((index, value)))
نتیجه
در این مقاله چهار روش مختلف را مرور کردیم که به ما کمک میکنند به یک فهرست و مقدار متناظر آن در لیست پایتون دسترسی پیدا کنیم.
علاوه بر ابتدایی ترین روش، به اصول درک لیست و روش استفاده از آنها برای حل این کار پرداختیم. اگرچه این روش سریعتر برای انجام آن در مقایسه با حلقه for عمومی است، اما اگر خود درک لیست بسیار پیچیده شود، معمولاً باید از استفاده از آن اجتناب کنیم. درک لیست پیچیده می تواند منجر به کدهای نامرتب زیادی شود.
توجه به این نکته مهم است که حتی اگر هر فهرستی را میتوان در یک حلقه for بازنویسی کرد، اما هر حلقه for را نمیتوان در درک فهرست بازنویسی کرد.
دو روش دیگری که ما استفاده کردیم تکیه بود روی توابع داخلی پایتون: enumerate()
و zip()
، که شاخص ها و مقادیر متناظر آنها را به چند تایی متصل می کند. سپس آن تاپل ها را به لیست تبدیل کرده و چاپ کردیم روی خروجی استاندارد
(برچسبها به ترجمه)# python
منتشر شده در 1403-01-13 07:19:03