Создание отфильтрованного списка с непониманием списка - PullRequest
0 голосов
/ 18 марта 2020

В основном, учитывая список букв l, я хотел отфильтровать список букв, чтобы включить только один экземпляр указанных букв в новый список:

l2 = []
for i in l:
    if i not in l2:
        l2.append()

И я хотел использовать понимание списка, поэтому я написал:

l2 = [i for i in l if i not in l2]

Но он возвращает мне пустой l2. Я только начинаю изучать, как использовать списочное понимание, и я немного устал, так что я не вижу, где или если я делаю неправильно: (

Ответы [ 3 ]

1 голос
/ 18 марта 2020
Понимание списка

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

Либо вы можете использовать,

l2 = set(l) # if rlist is required you can type cast it back to list like, l2 = list(set(l))
0 голосов
/ 18 марта 2020

Проблема с вашим пониманием списка состоит в том, что он опирается на список l2, который сам является целью понимания списка.

Иногда понимание списка не лучший способ для go, хотя это хороший инструмент.

Для ваших целей лучше всего преобразовать список l в набор (в котором нет дубликатов), а затем преобразовать обратно в список, который можно назначить вашему списку l2:

l2 = list(set(l))
0 голосов
/ 18 марта 2020

Понимание списка здесь не может работать, так как l2 обновляется только после того, как завершены все действия по списку, нет понятия о промежуточном состоянии списка компа

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

l2 = set(l)
l2 = list(set(l)) # if you really want a list at the end
...