Найдите пары последовательных целых чисел в массиве PYTHON - PullRequest
0 голосов
/ 04 августа 2020

Я пытаюсь пройти l oop через массив и возвращать целое число каждый раз, когда оно появляется дважды --- Я пытался понять это несколько дней, и мне действительно нужна помощь

например:

input = [3, 4, 4, 4, 5, 6, 6, 5, 4, 4]
result = [4,6,4]
result=[]
def findPairs(input):
    i = 0
    while i < len(input):
        for j in input:
            if input[1]==input[2]:
                result.append(j)
                i += 1
    print(result)
        
        
        
print (findPairs(input))

Ответы [ 2 ]

2 голосов
/ 04 августа 2020

В ответ на последние разъяснения:

def find_pairs(xs):
    result = []
    i = 0
    
    while i < len(xs) - 1:
        if xs[i] == xs[i + 1]:
            result.append(xs[i])
            i += 1
        i += 1

    return result

Тестирование:

>>> xs = [3, 4, 4, 4, 5, 6, 6, 5, 4, 4]
>>> find_pairs(xs)
[4, 6, 4]

Обновление: Мелкое поэтапное исправление ошибки.

0 голосов
/ 04 августа 2020

Попробуйте этот метод со списком -

import itertools

inp = [3, 4, 4, 4, 5, 6, 6, 5, 4, 4]
l = [i for i in zip(inp, inp[1:]) if i[0]==i[1]] #first get consecutive repeats
out = [k[0] for k, g in itertools.groupby(l)] #sequential grouping of repeated groups to count more than 2 occurances as a single one as well
print(out)
[4, 6, 4]
...