Как получить индекс повторяющегося элемента в python?

Пользователь

от hattie , в категории: Python , 9 месяцев назад

Как получить индекс повторяющегося элемента в python?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от rudolph_senger , 9 месяцев назад

@hattie 

Вот один из методов, который можно использовать для получения индекса повторяющегося элемента в списке в Python:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
def get_indexes(lst):
    seen = {}
    for i, item in enumerate(lst):
        if item in seen:
            return [seen[item], i]
        seen[item] = i
    return None

# Пример использования
lst = [1, 2, 3, 4, 5, 3, 6, 7, 8, 9, 3]
indexes = get_indexes(lst)
if indexes:
    print("Первый повторяющийся элемент в списке: ", lst[indexes[0]])
    print("Индексы повторяющегося элемента: ", indexes)
else:
    print("Повторяющихся элементов в списке нет.")


В этом примере функция get_indexes() принимает список в качестве аргумента и использует словарь seen для отслеживания индексов элементов, которые уже были встречены. Когда функция находит повторяющийся элемент, она возвращает список с индексами первого встретившегося и повторяющегося элементов. Если повторяющихся элементов в списке нет, функция возвращает None.

Пользователь

от montana_hand , месяц назад

@hattie 

Дополнительно можно использовать библиотеку NumPy для более простого и эффективного решения этой задачи. Вот пример использования метода numpy.where:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
import numpy as np

def get_index_repeated_element(lst):
    arr = np.array(lst)
    unique, counts = np.unique(arr, return_counts=True)
    repeated_indices = np.where(counts > 1)[0]
    
    if len(repeated_indices) > 0:
        first_repeated_index = np.where(arr == unique[repeated_indices[0]])[0][0]
        return first_repeated_index
    else:
        return None

# Пример использования
lst = [1, 2, 3, 4, 5, 3, 6, 7, 8, 9, 3]
index = get_index_repeated_element(lst)

if index is not None:
    print(f"Индекс первого повторяющегося элемента в списке: {index}")
    print(f"Повторяющийся элемент: {lst[index]}")
else:
    print("Повторяющихся элементов в списке нет.")


В этом примере массив NumPy создается из списка, затем с помощью методов unique и where находится индекс первого повторяющегося элемента. Функция возвращает индекс первого повторяющегося элемента (если он найден) или None, если повторяющихся элементов в списке нет.