حذف آیتم تکراری از لیست با پایتون
برای حذف تکرارها از یک لیست در پایتون، روشهای مختلفی وجود دارد. یکی از روشهای متداول استفاده از 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
استفاده کرد. در این صورت میتوانید از یک حلقه تو در تو برای مقایسه هر عنصر با سایر عناصر استفاده کنید که این روش ممکن است زمانبر باشد، به ویژه برای ورودیهای بزرگ.