Ho я могу проверить дубликаты в списке Django Python

Привет мне нужно проверить перекрытие и дублирование строки из данных , я смог это сделать может кто нибудь помочь мне найти дубликат строки .У меня есть эти данные s = [(100, 350,"a"), (125, 145,"a"), (200, 400, "d"), (0, 10, "a")] и я сделал часть перекрытия но проверка дублирования odf строки мне нужна помощь .

def overlap(a, b) -> bool:
  a_start, a_end, _ = a
  b_start, b_end, _ = b
  return a_start < b_end and b_start < a_end
ls = [(100, 350,"a"), (125, 145,"a"), (200, 400, "d"), (0, 10, "a")]
overlaps = set()
for idx_a in range(len(ls)):
    for idx_b in range(len(ls)):
        if idx_a != idx_b:  
            if overlap(ls[idx_a], ls[idx_b]):
                overlaps.add(ls[idx_a])
                overlaps.add(ls[idx_b])

print(f"Number of overlaps: {len(overlaps)}")

Похоже, что вам не нужно использовать set, если вам нужно только количество перекрытий.

Я бы решил вашу проблему следующим образом:

def is_overlapped(a, b) -> bool:  # changed the name for readability 
  a_start, a_end, _ = a
  b_start, b_end, _ = b
  return a_start < b_end and b_start < a_end
ls = [(100, 350,"a"), (125, 145,"a"), (200, 400, "d"), (0, 10, "a")]
overlaps = 0 # int instead of set
for idx_a, value_a in enumerate(ls):  # this is more pythonic way to access the index and item at the same time
    for idx_b, value_b in enumerate(ls):
        if idx_a != idx_b:  
            if is_overlapped(value_a, value_b):
                overlaps += 1
print(f"Number of overlaps: {overlaps}")
Вернуться на верх