Как я могу разделить список по порогу? - PullRequest
0 голосов
/ 30 марта 2020

У меня есть такой список, и я могу отделить этот список без указания какого-либо числа. Но в этом списке разница должна быть 9 между минимальным и максимальным числом. Например, первый список должен начинаться с 66, когда дело доходит до 78, другой список должен формироваться автоматически.

 [66.8344897031784,
 68.30329954624176,
 78.08724462985992,
 107.26053655147552,
 107.44138896465302,
 109.66499030590057,
 171.51213765144348,
 172.01367378234863,
 173.17001342773438,
 343.152220249176,
 343.6864709854126,
 346.3593053817749,
 366.87140941619873,
 372.18000888824463,
 376.73717975616455,
 431.0921788215637,
 431.4517140388489,
 431.8779182434082,
 500.0079822540283,
 500.45250415802,
 503.12490463256836]

1 Ответ

0 голосов
/ 30 марта 2020

Поскольку это, очевидно, тривиальное домашнее задание, я должен быть осторожен, чтобы не сказать слишком много. Я попытаюсь исправить вашу непосредственную проблему, но не опубликую полное решение.

Сейчас вы просматриваете список, проверяете ошибки менее 9, но никогда не начинаете новый список , Если вы проверите размер пропуска, либо он достаточно мал, чтобы добавить его в список, В противном случае вам нужно начать новый список.

Использование «else» с вашим «if» позволяет вам определить, когда начинать новый список.

first_list=[] 
first_list.append(ymid[0]) 
for i in range(len(ymid)-1): 
    if ymid[i+1]<(ymid[i]+9): 
        first_list.append(ymid[i+1])
    else:
        # done with this list
        print (first_list)
        # start the new list
        first_list = [ymid[i]]

Вы заметите, что вывод неправильный, потому что ваш l oop неправильный, но это то, что вы можете исправить при отладке. Добро пожаловать в программирование :)

Поскольку вы уже обработали первый элемент, должен ли ваш l oop начинаться с 0? Стоит ли сравнивать со следующим предметом или с предыдущим? Как только вы заработаете, убедитесь, что вы обрабатываете последний элемент.

Конечно, у вас может быть список списков. Вместо того, чтобы просто печатать каждый результат, вы можете добавить его в список результатов. Только не забудьте начать новый список для следующей группировки.

results = []
current_list=[] 
current_list.append(ymid[0]) 
for i in range(len(ymid)-1): 
    if ymid[i+1]<(ymid[i]+9): 
        current_list.append(ymid[i+1])
    else:
        # add current_list to results
        results = current_list
        # start the new list
        current_list = [ymid[i]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...