Найти - Пользователи
Полная версия: удаление элемента из списка
Начало » Python для новичков » удаление элемента из списка
1 2
papuas
print a
[{'c1':'qqq'},{'c2':'www'},{'c3':'eee'},{'c4':'rrr'},{'c5':'ttt'}]
print var
[0, 1, 2]
a = [i for i in a if i in var]
print a
[]
а должно быть [{'c4':'rrr'},{'c5':'ttt'}]
а если 
del a[i for i in var]
SyntaxError: invalid syntax

надеюсь понятно
подскажите варианты пожалуйста.
ZerG
del i for i in var
papuas
ZerG
del i for i in var
papuas
ZerG
del i for i in var
мне нужно из списка –> a удалить каждый i for i in var
a = [{'c1':'qqq'},{'c2':'www'},{'c3':'eee'},{'c4':'rrr'},{'c5':'ttt'}] 
var = [0,1,2]
желательно в одну строку
papuas
papuas
мне нужно из списка –> a удалить каждый i for i in var

a = [{'c1':'qqq'},{'c2':'www'},{'c3':'eee'},{'c4':'rrr'},{'c5':'ttt'}] 
var = [0,1,2]

желательно в одну строку
результат немного не тот
>>> a = [{'c1':'qqq'},{'c2':'www'},{'c3':'eee'},{'c4':'rrr'},{'c5':'ttt'}]
>>> var = [0,1,2]
>>> for i in var: del a[i]
>>> print a
[{'c2': 'www'}, {'c4': 'rrr'}]
или
>>> [a.pop(i) for i in var]
>>> print a
[{'c2': 'www'}, {'c4': 'rrr'}]
FishHook
papuas
Ваша задача решается не удалением из списка, а созданием нового списка, на основе старого
a = [{'c1':'qqq'},{'c2':'www'},{'c3':'eee'},{'c4':'rrr'},{'c5':'ttt'}]
var = [0,1,2]
a = [el for index, el in enumerate(a) if index in var]
или так
a = [{'c1':'qqq'},{'c2':'www'},{'c3':'eee'},{'c4':'rrr'},{'c5':'ttt'}]
var = [0,1,2]
a = [a[i] for i in var]
ZerG
Ну или в две строки

for i in var:
    del a[i]
FishHook
ZerG
Ну или в две строки
Да нельзя так делать! Не получишь ты правильного результата удаляя из списка в цикле.
После того, как ты удалишь нулевой элемент, первый элемент станет нулевым, второй первым и так далее.
Поэтому, когда ты удаляешь последовательно 0, 1 и 2-й элементы, ты удалишь 0, 2 и 4-й.
Попробуй выполни свой код и увидишь, что он не работает.
ZerG
Хм - таки да! Что-то сегодня я весь день вальта отбиваю!
Мало того в виду удаления будет смещен индекс и вызов индекса превышающего длину.
Век живи - век дурак. Спасибо!
marvellik
я правильно понял удалить из списка элементы с индексами заданными в списке var?
тогда мне кажется так и в одну строку
a = [ i for x,i in enumerate(a) if x not in var ]
>>> [{'c4': 'rrr'}, {'c5': 'ttt'}]
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB