Попробуйте
let list=['02', '03', '03', '16', '17', '17', '28', '29', '29']
let unduplist=filter(copy(list), 'index(list, v:val, v:key+1)==-1')
. По второму вопросу см. :h index()
.
Кстати, если
- все элементы списка являются строками;
- пустые строки невозможны;
- вам не важен порядок пунктов списка
тогда вам, вероятно, следует вместо этого использовать словарь: для большого числа строк поиск дубликатов происходит быстрее (и действительно не требуется).