2016-12-16 3 views
-5

Предполагая «а» список, который содержит (например) [2,4,2,3,3,3]Python Список Постижение однострочные

for i in a: 
    if a.count(i) == i: 
     a.remove(i) 

Как преобразовать код в одну строку используя список comprehenstion, лямбда, фильтр или что-то другое.

+0

Нет, моя цель - удалить только один из N элементов, которые получили N номеров. –

+0

Например, если a является [2,3,3,2,4,4], то выход будет: [2,3,3,4,4], поскольку только 2 получили N элементов в виде N (два элемента два) , –

+0

@ПомощьПожалуйста, эта информация лучше всего в вашем вопросе. –

ответ

2

Никогда не удаляйте элементы из списка, итерации по нему, итерация перепуталась, и вы не получите желаемого результата.

>>> [x for i, x in enumerate(a) if a.count(x) != x or a.index(x) != i] 
[4, 2, 3, 3] 
+0

Спасибо за ваш комментарий, но это не то, что я имел в виду. –

+2

@HelpПожалуйста, уточните, что вы имели в виду. –

+0

Для обеспечения, если a является [2,3,3,2,4,4] , выход будет: [2,3,3,4,4] , поскольку только 2 получили N элементов в виде N (два элемента два) –

Смежные вопросы