Условная итерация через массив для каждого элемента до текущего элемента - PullRequest
0 голосов
/ 02 ноября 2018

В Python для списка чисел я хочу добавить каждое число, которое составляет не менее 12 от максимума ряда до этой точки, а затем завершить итерацию, если число в ряду меньше 12 максимум. Это то, что я пытаюсь до сих пор, но не могу получить правильные результаты (далее все цифры до 2-го числа должны быть добавлены):

массив = [2, 4, 7, 3, 9, 10, 1, 14, 1, 20, 13, 14, 10, 6, 12]

for i in range(len(array)):
       list1 = []
       if not array[i] < (i - 12) in array[0:i]:
           list1.append(array[i])
           print(list1)

Чтобы попытаться уточнить, я работаю с набором цен, которые являются последовательными. Я хочу перебрать последовательность до тех пор, пока число не станет на 12 меньше максимума серии до этой точки. Затем мне нужно завершить эту итерацию и начать тот же процесс снова, но со следующей цены в наборе данных.

Ответы [ 3 ]

0 голосов
/ 02 ноября 2018

Ваш вопрос немного неясен, но если я правильно понял, вы ищете что-то вроде этого:

array = [2, 4, 7, 3, 9, 10, 1, 14, 1, 20, 13, 14, 10, 6, 12]
list1 = []
for i in range(len(array)):
    if (max(array[:i+1]) - array[i] ) <= 12:
        list1.append(array[i])
    else:
        break

print(list1) # Output: [2, 4, 7, 3, 9, 10, 1, 14, 10]
0 голосов
/ 02 ноября 2018

намного короче ...

Просто однострочник !!!

Вот оно:

result = sorted(set(array),key=array.index)[:12]

Сейчас:

print(result)

Является:

[2, 4, 7, 3, 9, 10, 1, 14, 20, 13, 6, 12]
0 голосов
/ 02 ноября 2018

Если я правильно понимаю вашу проблему, то я думаю, что это должно достичь того, что вы хотите:

# added more data to better illustrate solution
array = [2, 4, 7, 3, 9, 10, 1, 14, 1, 20, 13, 14, 10, 6, 12, 10, 4, 5, 6, 7, 8, 9, 123]
result = []

for i in range(len(array)):

    if(len(result) < 12):
        value = array[i]
        if( not value in result ):
            result.append(value)   
    else:
        break

print('input', array)
print('result', result)

Вот вам pyfiddle , чтобы вы могли попробовать

...