Как найти положение похожих номеров в списке - PullRequest
0 голосов
/ 13 марта 2019

Учитывая список элементов с определенными похожими элементами, как мне написать код на Python, чтобы найти позицию всех похожих элементов в нем? Это должно быть сделано с использованием цикла for и условий внутри цикла for.

list1 = [5, 90, 10, 5, 100, 5]

Таким образом, в этом случае, так как 5 является элементом, который имеет повторы или связи, выходной сигнал будет 0,3,5.

Ответы [ 4 ]

2 голосов
/ 13 марта 2019

Можно попытаться использовать set, чтобы найти уникальный набор элементов в list, а затем проверить индексы повторяющихся элементов.

Попробуйте следующий код:

from collections import defaultdict

list1 = [5, 90, 10, 5, 100, 5]

set1 = set(list1)
res_dict = defaultdict(list)

for x in set1:
    for i, y in enumerate(list1):
        if x == y:
            res_dict[x].append(i)

print res_dict

Выход:

{90: [1], 100: [4], 10: [2], 5: [0, 3, 5]}
1 голос
/ 13 марта 2019

С enumerate внутри списка для 5 ,

>>> list1 = [5, 90, 10, 5, 100, 5]
>>> all_index = [i for i, j in enumerate(list1) if j == 5]
>>> all_index

Выход:

[0, 3, 5]

С петлей для всего элемента,

list1 = [5, 90, 10, 5, 100, 5]
result = {}
for e in list1:
    result[e] = [i for i, j in enumerate(list1) if j == e]
print(result)

Выход:

 {90: [1], 10: [2], 100: [4], 5: [0, 3, 5]}
0 голосов
/ 13 марта 2019

Использование только цикла for и условия:

input_list = [5, 90, 100, 5, 100, 5]

elements = {}
result = []

for i, e in enumerate(input_list):
    if e in elements:
        if not elements[e][1]:
            result.append(elements[e][0])
            elements[e][1] = True
        result.append(i)
    else:
        elements[e] = [i, False]

print(sorted(result))
0 голосов
/ 13 марта 2019

Использование np.where даст вам то, что вы хотите:

import numpy as np

list1 = [5, 90, 10, 5, 100, 5]

data = np.array(list1)
unique = sorted(list(set(data)))

match = {}
for i in range(len(unique)):
    match[unique[i]] = np.where(data == unique[i])[0]

print(match)
>>> {5: array([0, 3, 5]), 10: array([2]), 90: array([1]), 100: array([4])}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...