почему не добавляется значение в список?

Необходимо, чтобы значения, которых нет в w, но есть в s, добавлялись в список lst. Не понимаю, в чём проблема.

s = [1, 2, 'set', 'frozenset', False, 3.14 ,'set', 'mama', 2, 3.148, 'frozenset']

w = set(s)
w = list(w)
lst = []


print(s, w)

if len(s) > len(w):
    for i in s:
        if i not in w:
            lst.append(i)

    print(f"вы отгадали нужный символ {lst}")
else:
    print('неудача')

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

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

в w будут все значения, что и в s, но только по одному разу.

Таких значений, чтобы только в s, просто нет, поэтому ничего и не добавляется.

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

Надо немного иначе...

s = [1, 2, 'set', 'frozenset', False, 3.14 ,'set', 'mama', 2, 3.148, 'frozenset']

lst = [item for item in set(s)  # перебираем множество у Вас было w
       # но берём только те элементы которых в s больше одного
       if (c := s.count(item)) > 1
       # далее закидываем элемент c - 1 раз   
       for _ in range(c - 1)]

if lst:
    print(f"вы отгадали нужный символ {lst}")
else:
    print('неудача')

Walrus
В этом условии: if (c := s.count(item)) > 1 с помощью выражения присваивания :=
мы сохраняем в переменной c результат метода count(),
который используем уже ниже для добавления дублирующих элементов из s.

Для оператора ”walrus” есть PEP 572,
начните знакомство с раздела Примеры (Examples)


тоже, но чуть-чуть иначе:

from collections import Counter


s = [1, 2, 'set', 'frozenset', False, 3.14 ,'set', 'mama', 2, 3.148, 'frozenset']

count = Counter(s)

lst = [item for item, c in count.items() if c > 1 for _ in range(c - 1)]

if lst:
    print(f"вы отгадали нужный символ {lst}")
else:
    print('неудача')

collections.Counter Документация

→ Ссылка