Почему списковое понимание не отфильтровывает дубликаты?

У меня есть обходной путь к следующему вопросу. Этот обходной путь будет циклом for с проверкой включения в вывод, как показано ниже:

#!/usr/bin/env python

def rem_dup(dup_list):
    reduced_list = []
    for val in dup_list:
        if val in reduced_list:
            continue
        else:
            reduced_list.append(val)

    return reduced_list

Я задаю следующий вопрос, потому что мне любопытно посмотреть, есть ли решение для понимания списка.

Учитывая следующие данные:

reduced_vals = []
vals = [1, 2, 3, 3, 2, 2, 4, 5, 5, 0, 0]

Почему

reduced_vals = = [x for x in vals if x not in reduced_vals]

составить такой же список?

>>> reduced_vals
[1, 2, 3, 3, 2, 2, 4, 5, 5, 0, 0]

Я думаю, что это как-то связано с проверкой вывода(reduced_vals)как часть задания к списку. Мне любопытно, однако, что касается точной причины.

Спасибо.

5
задан Simeon Visser 16 July 2012 в 14:10
поделиться