Вывести числа строки, которые отсутствуют в проверочном списке

def func(s):
    li = []
    s = list(s)
    check = [0,1,2,3,4,5,6,7,8,9]
    for i in check:
        if i not in s:
            li.append(i)
    return li

s = '9832209763'
func(s) >> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Функция вроде бы должна вывести [1,4,5]


Ответы (2 шт):

Автор решения: Амин

Твоя ошибка во время проверки:"if i not in s". Все числа из проверочного списка, имею тип int, а строка str, соответсвенно число не может быть в строке. Поэтомy надо написать: "if str(i) not in s".

→ Ссылка
Автор решения: CrazyElf

Но вообще можно тоже самое сделать гораздо короче - через разность множеств. Преобразование символов строки в числа у меня сделано через map(int, s):

s = '9832209763'
check = {0,1,2,3,4,5,6,7,8,9}
print(check.difference(map(int, s)))

На выходе:

{1, 4, 5}

Если на выходе надо получить именно список, то надо взять list() от результата. Сейчас у меня на выходе множество.

P.S. Вообще-то код у вас решает задачу, обратную той, что заявлена в вопросе - выводит те цифры из проверочного списка, которых не найдено в строке.

→ Ссылка