Вот эффективный способ сделать это (относительно вышеупомянутых решений;)), поскольку этот подход значительно сокращает количество сравнений между элементами списка. Если у меня есть огромный список, я бы определенно пошел с этим, и, конечно, вы можете превратить это решение в функцию лямбда, чтобы он выглядел небольшим:
string_list = ['rest', 'resting', 'look', 'looked', 'it', 'spit']
for item in string_list:
for item1 in string_list:
if item in item1 and item!= item1:
string_list.remove(item)
print string_list
Выход:
>>>['resting', 'looked', 'spit']
Надеюсь, что это поможет!
Вы можете сделать это, обработав результат из своей записи:
result = ['1', None, 's', '1']
for idx, item in enumerate(result):
try:
result[idx] = int(item)
except:
if item == 'None':
result[idx] = None
>>> result
[1, None, 's', 1]