حذف آیتم تکراری از لیست با پایتون
برای حذف تکرارها از یک لیست در پایتون، روشهای مختلفی وجود دارد. یکی از روشهای متداول استفاده از set است، که مجموعهای از اشیا متمایز و نامرتب را تشکیل میدهد. برای مثال:
t = [1, 2, 3, 1, 2, 3, 5, 6, 7, 8]
unique_list = list(set(t))
print(unique_list) # خروجی: [1, 2, 3, 5, 6, 7, 8]
توجه: این روش ترتیب اصلی عناصر را حفظ نمیکند و ممکن است ترتیب جدیدی به خروجی داده شود.
حفظ ترتیب در حذف تکرارها
اگر نیاز به حفظ ترتیب عناصر داشته باشید، میتوانید از OrderedDict استفاده کنید. این ساختار داده، ترتیب کلیدها را در زمان درج حفظ میکند. در پایتون 3.7 به بعد، دیکشنریهای معمولی نیز این ویژگی را دارند. به این ترتیب میتوانید از یکی از دو روش زیر استفاده کنید:
استفاده از OrderedDict:
from collections import OrderedDict
result = list(OrderedDict.fromkeys(t))
print(result) # خروجی: [1, 2, 3, 5, 6, 7, 8]
استفاده از دیکشنری:
result = list(dict.fromkeys(t))
print(result) # خروجی: [1, 2, 3, 5, 6, 7, 8]
این دو روش نه تنها تکرارها را حذف میکنند، بلکه ترتیب عناصر را نیز حفظ میکنند.
عملکرد و کارایی
استفاده از set معمولاً سریعتر از استفاده از OrderedDict یا dict است، به خصوص در لیستهای بزرگ. اگر فقط حذف تکرارها بدون نیاز به حفظ ترتیب برای شما مهم است، set را انتخاب کنید. با این حال اگر نیاز به ترتیب دارید، دیکشنریها و OrderedDict گزینههای مناسبی هستند.
نکات اضافی
اگر اشیائی که با آنها کار میکنید قابل هش شدن (hashable) نباشند، مانند لیست ها، نمیتوان به راحتی از set یا dict استفاده کرد. در این صورت میتوانید از یک حلقه تو در تو برای مقایسه هر عنصر با سایر عناصر استفاده کنید که این روش ممکن است زمانبر باشد، به ویژه برای ورودیهای بزرگ.