@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
.
@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, если повторяющихся элементов в списке нет.