Если вы просто пытаетесь определить, что в списке нет дубликатов, вы можете создать набор() с элементами списка и сравнить длину этих двух. Такая же длина означает отсутствие дубликатов.
Определение, если они являются последовательными, может смотреть на разность максимальных и минимальных значений списка, которая должна быть на единицу меньше длины.
«Разность настроек» может использоваться для поиска отсутствующих целых чисел.
Вот некоторые краткие определения:
def all_different(any_list):
'''returns True if all items in the list are different.
(Note: this assumes input is a list'''
return len(any_list) == len(set(any_list))
def any_duplicate(any_list):
'''returns True if any items in the list are repeated.
(Note: this assumes input is a list'''
return len(any_list) != len(set(any_list))
def sequential_ints(list_of_ints):
'''returns True if input is a sequential list of ints.
(Note: this assumes input is a list, and only of ints'''
return len(list_of_ints)-1==max(list_of_ints)-min(list_of_ints)
def find_missing(list_of_ints):
'''returns a list of any integers "missing", assuming
input was "supposed to be" sequential list of ints.
(Note: this assumes input is a list, and only of ints'''
return list(set(range(min(list_of_ints),max(list_of_ints)+1))-set(list_of_ints))
Этот тестовый код:
list1 = [1, 2, 3, 4, 5, 6]
print("all_different:", all_different(list1))
print("any_duplicate:", any_duplicate(list1))
print("sequential_ints:", sequential_ints(list1))
print("find_missing: ", find_missing(list1))
print()
list2 = [1, 2, 3, 4, 5, 6, 2]
print("all_different:", all_different(list2))
print("any_duplicate:", any_duplicate(list2))
print("sequential_ints:", sequential_ints(list2))
print("find_missing: ", find_missing(list2))
print()
list3 = [1, 3, 4, 6]
print("all_different:", all_different(list3))
print("any_duplicate:", any_duplicate(list3))
print("sequential_ints:", sequential_ints(list3))
print("find_missing: ", find_missing(list3))
Дает:
all_different: True
any_duplicate: False
sequential_ints: True
find_missing: []
all_different: False
any_duplicate: True
sequential_ints: False
find_missing: []
all_different: True
any_duplicate: False
sequential_ints: False
find_missing: [2, 5]
К сожалению, этот вопрос остается неясным. Вы имели в виду, что вам нужно проверить, что: для всех чисел в списке, которые больше нуля, эти цифры упорядочены и последовательно подсчитываются вверх? Таким образом, [3,4, -2,0,5] проходит, но [3,4,4,5], [3,5] и [3,5,4] нет? –