2016-10-28 4 views
0

Если у меня есть список:Проверьте список содержит только и все цифры от 1 до 9, без каких-либо дубликатов

[6, 7, 4, 8, 9, 5, 3, 2, 1] 

Я хочу, чтобы убедиться, что каждое число от 1 до 9 в списке, с нет повторов и других номеров. Каков наилучший способ сделать это?

+3

'сортирован (my_list) == список (диапазон (1, 10))' – Selcuk

+0

@Selcuk: * "от 1 до 9 находится в положении список, без повторов, и никакое другое число s ». * В соответствии с этим существует возможность пропуска числа (как не упоминалось в вопросе). В этом случае он потерпит неудачу. –

+0

@anonymous Вы заметили решение, которое Selcuk разместил в комментарии прямо перед вашим? – idjaw

ответ

3

Это хороший способ решить такого рода проблемы:

Сортируя список, и сравнивая равенство со списком в диапазоне от 1 - 9, вы будете покрывать все случаи в соответствии с требованием всех чисел от 1 до 9, без дубликатов:

sorted(my_list) == list(range(1, 10)) 

Демонстрация:

>>> my_list = [1,2,3,4,5,6,7,8,9] 
>>> sorted(my_list) == list(range(1, 10)) 
True 

>>> my_list = [1,2,3,4,5,6,7,9,9] 
>>> sorted(my_list) == list(range(1, 10)) 
False 

>>> my_list = [1,2,3,4,5,6,7] 
>>> sorted(my_list) == list(range(1, 10)) 
False 
Смежные вопросы