ترکیب نحوی ساده و یادگیری آسان پایتون خوانایی آنرا بیشتر کرده و هزینه تولید برنامهها را کاهش داده است. پایتون از ماژولها و بستهها پشتیبانی میکند که ماژولار بودن برنامه و استفاده مجدد از کدها را سادهتر میکند. مفسر پایتون و طیف گستردهای از کتابخانهها که این زبان را برای ساخت برنامههای کاربردی مختلفی به گزینه ایدهآلی تبدیل کرده است، باعث شده تا توسعهدهندگان برای ساخت برنامههای کاربردی مختلفی از پایتون استفاده کنند. در این مقاله به این موضوع خواهیم پرداخت که لیست (List) در پایتون چیست. از آنجایی که یک لیست پایتون مجموعهای از چندین عنصر، از جمله موارد تکراری است، گاهی اوقات لازم است که یک لیست را منحصربهفرد کنید. در این بخش به روشهای مختلف موارد تکراری از یک لیست پایتون را حذف میکنیم. در ابتدا باید ببینم که لیست دقیقا چیست؟
لیست در پایتون چیست؟
لیست (List) مهمترین نوع دادهای در زبان برنامهنویسی پایتون است. لیستها در پایتون مقادیری را که با کاما و محصور در براکت هستند نگهداری میکنند. مهمترین مزیت لیست این است که عناصر درون آن لازم نیست از یک نوع داده باشند و برای دسترسی به مقادیر آنها امکان استفاده از مقادیر منفی نیز وجود دارد. علاوه بر این، تمام عملیات رشتهها، مانند برش و الحاق، برای انواع دادههای لیست قابل اعمال هستند. ما همچنین می توانیم یک لیست تودرتو بسازیم که لیستی باشد که خود شامل لیست دیگری باشد.
چگونه موارد تکراری را از لیست پایتون حذف کنیم؟
در پایتون، روشهای متعددی برای حذف موارد تکراری از لیست وجود دارد که در ادامه به برخی از این روشها نگاهی خواهیم داشت.
1. روش بومی
برای حذف موارد تکراری از یک لیست در پایتون، عناصر لیست را شماره کنید اولین مقدار پیدا شده را در یک لیست موقت ذخیره کنید و سایر مقادیر را نادیده بگیرید. الگوریتم انجام این عمل بهشرح زیر است:
- از یک حلفه For برای پیمایش لیست استفاده کنید.
- اگر عناصر از قبل در یک لیست موقت وجود نداشته باشند، مقادیر را به لیست اضافه کنید.
- لیست موقت را به لیست اصلی اختصاص دهید.
- اکنون برای الگوریتمی که ارائه کردیم قطعه کد زیر را مینویسیم:
sam_list = [11, 13, 15, 16, 13, 15, 16, 11]
print ("The list is: " + str(sam_list))
# حذف عناصر تکراری از لیست
result = []
for i in sam_list:
if i not in result:
result.append(i)
# چاپ لیست بعد از حذف مقادیر تکراری
print ("The list after removing duplicates : " + str(result))
خروجی:
The list is: [11, 13, 15, 16, 13, 15, 16, 11]
The list after removing duplicates: [11, 13, 15, 16]
2. از ویژگی قدرتمند پایتون استفاده کنید
بهجای استفاده از حلقه For بهعنوان مکانیزم پایه برای حذف موارد تکراری از یک لیست، میتوانیم از قابلیتهای بومی پایتون استفاده کنیم و تنها از یک خط کد برای این منظور استفاده کنیم.
مثال:
# حذف موارد تکراری از لیست با استفاده از درک لیست
# فهرست اولیه
sam_list = [11, 13, 15, 16, 13, 15, 16, 11]
print ("The list is: " + str(sam_list))
حذف عناصر تکراری از لیست #
result=[]
[result.append(x) for x in sam_list if x not in result]
# printing list after removal
print ("The list after removing duplicates: " + str(result))
خروجی:
The list is: [11, 13, 15, 16, 13, 15, 16, 11]
لیست بعد از حذف شدن عناصر تکراری: [11, 13, 15, 16]
3. استفاده از تابع set
رایجترین روش برای حذف عناصر تکراری از یک لیست پایتون است. متد فوق بر پایه این فرضیه کار میکند که تکرار در ساختار دادههای مجموعه (Set) مجاز نیست. با این حال، هنگام استفاده از این روش، ترتیب عناصر از بین میرود.
# حذف عناصر تکراری از لیست با استفاده از متد Set
# مقداردهی اولیه لیست
sam_list = [11, 15, 13, 16, 13, 15, 16, 11]
print ("The list is: " + str(sam_list))
# حذف عناصر تکراری از لیست
sam_list = list(set(sam_list))
# چاپ عناصر حذف شده
# چاپ لیست پس از حذف عناصر
print ("The list after removing duplicates: " + str(sam_list))
خروجی:
The list is: [11, 15, 13, 16, 13, 15, 16, 11]
The list after removing duplicates: [16, 11, 13, 15]
4. استفاده از تابع enumerate
در روش فوق عناصر متمایز را پیدا کرده و آنها را درون یک لیست موقت ذخیره میکنیم. هنگامی که از تابع ()enumerate استفاده میکنیم، برنامه عناصری را که قبلاً مشاهده کرده را بررسی میکند و عناصر تکراری را به لیست موقت اضافه نمیکند. تابع enumerate یک پارامتر تکرار را بهعنوان آرگومان میگیرد و آنرا بهعنوان یک شیء شمارشکننده (شاخص، عنصر) برمیگرداند، بهطوری که یک مقدار به ازای هر عنصر تکرار شده میافزاید.
# حذف عناصر تکراری با استفاده از enumerate()
# مقداردهی اولیه لیست
sam_list = [11, 15, 13, 16, 13, 15, 16, 11]
print ("The list is: " + str(sam_list))
# حذف عناصر تکراری از لیست
result = [i for n, i in enumerate(sam_list) if i not in sam_list[:n]]
# لیست پس از حذف عناصر تکراری
print ("The list after removing duplicates: " + str(result))
خروجی:
The list is: [11, 13, 15, 16, 13, 15, 16, 11]
The list after removing duplicates: [11, 13, 15, 16]
5. حذف عناصر تکراری با استفاده از collections.OrderedDict.fromkeys
سریعترین راه حذف عناصر تکراری از لیست پایتون تابع OrderedDict.fromkeys است. تابع فوق قبل از آنکه مقدار بازگشتی دیکشنری را بازگرداند، ابتدا عناصر تکراری را از لیست حذف میکند. تابع فوق قابلیت خوبی برای کار با رشتهها دارد.
# removing duplicates from list using collections.OrderedDict.fromkeys()
from collections import OrderedDict
# initializing list
sam_list = [11, 15, 13, 16, 13, 15, 16, 11]
print ("The list is: " + str(sam_list))
# to remove duplicates from list
result = list(OrderedDict.fromkeys(sam_list))
# printing list after removal
print ("The list after removing duplicates: " + str(result))
Output:
The list is: [11, 15, 13, 16, 13, 15, 16, 11]
The list after removing duplicates: [11, 15, 13, 16]
کلام آخر
مجموعهها، توابع داخلی و روشهای تکرارشونده میتوانند برای حذف موارد تکراری از یک لیست به کار گرفته شوند. اگر عناصر لیست غیرقابل هش کردن هستند، همیشه از مکانیزم تکرارشونده استفاده کنید تا بتوانید عناصر منحصربهفرد را استخراج کنید. اگر ترتیب عناصر مهم نیست، میتوانیم موارد تکراری را با استفاده از متد Set و تابع ()Numpy unique حذف کنیم. همچنین، میتوانیم از توابع Pandas، OrderedDict، تابع ()reduce، متد Set + sort و رویکردهای تکرارشونده برای حفظ ترتیب عناصر استفاده کنیم.
ماهنامه شبکه را از کجا تهیه کنیم؟
ماهنامه شبکه را میتوانید از کتابخانههای عمومی سراسر کشور و نیز از دکههای روزنامهفروشی تهیه نمائید.
ثبت اشتراک نسخه کاغذی ماهنامه شبکه
ثبت اشتراک نسخه آنلاین
کتاب الکترونیک +Network راهنمای شبکهها
- برای دانلود تنها کتاب کامل ترجمه فارسی +Network اینجا کلیک کنید.
کتاب الکترونیک دوره مقدماتی آموزش پایتون
- اگر قصد یادگیری برنامهنویسی را دارید ولی هیچ پیشزمینهای ندارید اینجا کلیک کنید.
نظر شما چیست؟