بکندباز

حذف موارد تکراری از لیست تودرتو در پایتون

حذف موارد تکراری از لیست ها و … مسئله ایست که بارها به آن برخورد می کنیم، اما گاهی اوقات هنگامی که با ساختار های داده پیچیده و تو در تو سروکار داریم، به تکنیک های مختلفی برای رسیدگی به این نوع مسئله نیاز داریم. بیایید راه های مختلفی را که از طریق آن می توان به این کار دست یافت، بحث کنیم.

روش شماره 1: استفاده از sorted()‎ + set()‎

این مشکل خاص با استفاده از توابع بالا قابل حل است. ایده اینجا این است که فهرست فرعی را مرتب کنیم و سپس عناصر مشابه را با استفاده از تبدیل به set حذف کنیم که به صورت خودکار موارد تکراری را حذف می کند.

# Python3 code to demonstrate
# removing duplicate sublist
# using set()‎ + sorted()‎
 
# initializing list
test_list = [[1, 0, -1], [-1, 0, 1], [-1, 0, 1],
                           [1, 2, 3], [3, 4, 1]]
 
# printing original list
print("The original list : " + str(test_list))
 
# using set()‎ + sorted()‎
# removing duplicate sublist
res = list(set(tuple(sorted(sub)) for sub in test_list))
 
# print result
print("The list after duplicate removal : " + str(res))

خروجی: 

The original list : [[1, 0, -1], [-1, 0, 1], [-1, 0, 1], [1, 2, 3], [3, 4, 1]]
The list after duplicate removal : [(-1, 0, 1), (1, 3, 4), (1, 2, 3)]

روش شماره 2: استفاده از set()‎ + map()‎ + sorted()‎

همان الگوریتم حل انجام شده توسط list comprehension در روش بالا را می توان با استفاده از تابع map و با استفاده از تابع لامبدا تغییر داد:

# Python3 code to demonstrate
# removing duplicate sublist
# using set()‎ + map()‎ + sorted()‎
 
# initializing list
test_list = [[1, 0, -1], [-1, 0, 1], [-1, 0, 1],
                           [1, 2, 3], [3, 4, 1]]
 
# printing original list
print("The original list : " + str(test_list))
 
# using set()‎ + map()‎ + sorted()‎
# removing duplicate sublist
res = list(set(map(lambda i: tuple(sorted(i)), test_list)))
 
# print result
print("The list after duplicate removal : " + str(res))

خروجی: 

The original list : [[1, 0, -1], [-1, 0, 1], [-1, 0, 1], [1, 2, 3], [3, 4, 1]]
The list after duplicate removal : [(-1, 0, 1), (1, 3, 4), (1, 2, 3)]

روش شماره 3: استفاده از متد sorted()‎ و عملگر های in و not in

# Python3 code to demonstrate
# removing duplicate sublist
 
# initializing list
test_list = [[1, 0, -1], [-1, 0, 1], [-1, 0, 1],
                        [1, 2, 3], [3, 4, 1]]
 
# printing original list
print("The original list : " + str(test_list))
 
# removing duplicate sublist
res1 = []
for i in test_list:
    x=sorted(i)
    res1.append(x)
res=[]
for i in res1:
    if tuple(i) not in res:
        res.append(tuple(i))
 
# print result
print("The list after duplicate removal : " + str(res))

خروجی

The original list : [[1, 0, -1], [-1, 0, 1], [-1, 0, 1], [1, 2, 3], [3, 4, 1]]
The list after duplicate removal : [(-1, 0, 1), (1, 2, 3), (1, 3, 4)]
برچسب‌ها:
zohreh

مدیر وب سایت بکندباز

دیدگاه‌ها

*
*