از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
پیمایش لیست به ترتیب معکوس در پایتون
سرفصلهای مطلب
معرفی
اگر مدتی است که در پایتون کدنویسی میکنید، احتمالاً با روش پیمایش یک لیست به روش معمول – از اولین عنصر تا آخرین عنصر آشنا هستید. اما در مورد زمانی که شما نیاز دارید فهرستی را به ترتیب معکوس طی کنید، چطور؟ ممکن است کاری نباشد که شما نیاز دارید هر روز انجام دهید، اما زمانی که انجام می دهید، خوب است بدانید چگونه.
در این بایت، سه روش مختلف برای پیمایش یک لیست به ترتیب معکوس در پایتون را بررسی خواهیم کرد.
چرا یک لیست را به ترتیب معکوس طی کنید؟
چندین موقعیت وجود دارد که در آن پیمایش یک لیست به ترتیب معکوس می تواند مفید باشد. تصور کنید که با لیستی از رویدادها سروکار دارید که به ترتیب زمانی ذخیره شده اند و می خواهید process آنها از جدیدترین تا قدیمی ترین. یا شاید در حال پیادهسازی الگوریتمی هستید که از شما میخواهد از طریق یک لیست به صورت معکوس کار کنید. دلیلش هرچه که باشد، خوشبختانه چند راه برای انجام این کار در پایتون وجود دارد.
روش 1: استفاده از معکوس () تابع
پایتون یک تابع داخلی به نام دارد reversed()
که یک تکرار کننده معکوس برمی گرداند. تکرار کننده شیئی است که حاوی تعداد قابل شمارش مقادیر است و می توان روی آن تکرار کرد (حلقه کرد). در اینجا یک مثال سریع آورده شده است:
my_list = (1, 2, 3, 4, 5)
for i in reversed(my_list):
print(i)
خروجی:
5
4
3
2
1
این reversed()
تابع در واقع لیست اصلی را تغییر نمی دهد. در عوض، یک تکرار کننده معکوس به شما می دهد که می توانید روی آن حلقه بزنید. در غیر این صورت، اگر واقعاً لیست را معکوس کند و یک لیست جدید را برگرداند، این می تواند به یک عملیات بسیار گران تبدیل شود.
روش 2: استفاده از لیست برش
راه دیگر برای پیمایش یک لیست به ترتیب معکوس استفاده از برش لیست است. اپراتور برش (:)
می تواند سه پارامتر – start، stop و step را بگیرد. با تنظیم پارامتر step روی -1
، می توانیم لیست را به ترتیب معکوس طی کنیم.
my_list = (1, 2, 3, 4, 5)
for i in my_list(::-1):
print(i)
خروجی:
5
4
3
2
1
ممکن است به اندازه استفاده از خوانا نباشد reverse()
روش، اما جمع و جورتر است و به اندازه کافی قدرتمند است که در بسیاری از موارد استفاده دیگر (یعنی عبور از هر مورد دیگر از انتها) استفاده شود.
روش 3: استفاده از حلقه For با دامنه()
روش سوم شامل استفاده از a for
حلقه با range()
تابع. این range()
تابع می تواند سه پارامتر – start، stop و step را داشته باشد. با تنظیم پارامتر شروع به آخرین شاخص لیست، پارامتر توقف به -1
(برای رفتن به ابتدای لیست)، و پارامتر step به -1
(برای رفتن به عقب)، می توانیم لیست را به ترتیب معکوس طی کنیم.
my_list = (1, 2, 3, 4, 5)
for i in range(len(my_list) - 1, -1, -1):
print(my_list(i))
خروجی:
5
4
3
2
1
این range
تابع ممکن است یکی از اولین راه هایی باشد که شما برای ایجاد لیستی از اعداد افزایشی یاد گرفتید که اغلب برای تکرار استفاده می شود. اما ممکن است از پارامترهای start، stop و step اطلاعی نداشته باشید. اکنون که این کار را انجام می دهید، احتمالاً می توانید موارد استفاده دیگری را برای این عملکرد در نظر بگیرید.
مقایسه روش ها
اکنون که چند روش مختلف برای معکوس کردن یک لیست در پایتون دیدیم، بیایید آنها را از نظر خوانایی، عملکرد و موارد استفاده با هم مقایسه کنیم.
این reversed()
تابع پایتونیک ترین راه برای معکوس کردن یک لیست است. این ساده، خوانا و کارآمد است. مخصوصاً زمانی مفید است که نیاز دارید لیست را به ترتیب معکوس تکرار کنید، اما نمی خواهید لیست اصلی را تغییر دهید.
fruits = ('apple', 'banana', 'cherry')
for fruit in reversed(fruits):
print(fruit)
خروجی:
cherry
banana
apple
برش لیست یکی دیگر از روش های پایتونیک است. مختصر و خواندنی است، اما همین است یک کپی از لیست ایجاد می کند، اگر به دلیل استفاده از حافظه با یک لیست بزرگ کار می کنید، ممکن است مطلوب نباشد.
fruits = ('apple', 'banana', 'cherry')
print(fruits(::-1))
خروجی:
('cherry', 'banana', 'apple')
این for
حلقه با range()
یک رویکرد سنتی تر است. کمی پرمخاطب تر و کمتر پایتونیک است، اما به شما کنترل بیشتری روی تکرار می دهد، مانند رد کردن عناصر.
fruits = ('apple', 'banana', 'cherry')
for i in range(len(fruits)-1, -1, -1):
print(fruits(i))
خروجی:
cherry
banana
apple
کار با لیست های تودرتو
معکوس کردن یک لیست تو در تو می تواند کمی مشکل باشد. فرض کنید فهرستی از لیست ها داریم و می خواهیم هر لیست داخلی را معکوس کنیم. در اینجا روش انجام این کار با درک لیست و reversed()
تابع.
nested_list = ((1, 2, 3), (4, 5, 6), (7, 8, 9))
reversed_nested_list = (list(reversed(l)) for l in nested_list)
print(reversed_nested_list)
خروجی:
((3, 2, 1), (6, 5, 4), (9, 8, 7))
ممکن است متوجه شوید که این ترتیب خود لیست های داخلی را معکوس نکرده است. اگر می خواهید این کار را انجام دهید، می توانید به سادگی استفاده کنید reversed()
دوباره در لیست بیرونی
پیمایش به ترتیب معکوس با شرایط
گاهی اوقات، ممکن است بخواهید یک لیست را به ترتیب معکوس طی کنید و اقدامات را فقط روی عناصر خاصی انجام دهید. فرض کنید می خواهیم فقط اعداد فرد را به ترتیب معکوس چاپ کنیم. ما می توانیم این کار را با استفاده از a انجام دهیم for
حلقه با range()
و یک if
بیانیه:
numbers = (1, 2, 3, 4, 5, 6, 7, 8, 9)
for i in range(len(numbers)-1, -1, -2):
if numbers(i) % 2 != 0:
print(numbers(i))
خروجی:
9
7
5
3
1
راه دیگری برای رسیدن به این هدف با range
استفاده از یک مرحله از -2
، بجای -1
، و رها کردن if
وضعیت.
نتیجه
پیمایش یک لیست به ترتیب معکوس یک عملیات رایج در پایتون است و راه های مختلفی برای رسیدن به این هدف وجود دارد. این reversed()
تابع و برش لیست روش های پایتونیک هستند که ساده و خوانا هستند، در حالی که الف for
حلقه با range()
کنترل بیشتری روی تکرار به شما می دهد. هنگام کار با لیستهای تودرتو یا اعمال شرایط، این روشها را میتوان ترکیب کرد و متناسب با نیازهای شما تطبیق داد.
(برچسبها به ترجمه)# python
منتشر شده در 1402-12-28 13:46:04