Форум сайта python.su
6
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
Отредактировано papuas (Июнь 8, 2016 21:27:37)
Офлайн
61
del i for i in var
Офлайн
6
ZerG
del i for i in var
Отредактировано papuas (Июнь 8, 2016 14:03:53)
Офлайн
6
ZerGмне нужно из списка –> a удалить каждый i for i in var
del i for i in var
a = [{'c1':'qqq'},{'c2':'www'},{'c3':'eee'},{'c4':'rrr'},{'c5':'ttt'}] var = [0,1,2]
Отредактировано papuas (Июнь 8, 2016 14:04:26)
Офлайн
6
papuasрезультат немного не тот
мне нужно из списка –> a удалить каждый i for i in vara = [{'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'}]
Отредактировано papuas (Июнь 8, 2016 18:19:45)
Офлайн
568
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]
Отредактировано FishHook (Июнь 8, 2016 19:42:39)
Офлайн
61
Ну или в две строки
for i in var: del a[i]
Офлайн
568
ZerGДа нельзя так делать! Не получишь ты правильного результата удаляя из списка в цикле.
Ну или в две строки
Офлайн
61
Хм - таки да! Что-то сегодня я весь день вальта отбиваю!
Мало того в виду удаления будет смещен индекс и вызов индекса превышающего длину.
Век живи - век дурак. Спасибо!
Офлайн
73
я правильно понял удалить из списка элементы с индексами заданными в списке var?
тогда мне кажется так и в одну строку
a = [ i for x,i in enumerate(a) if x not in var ]
>>> [{'c4': 'rrr'}, {'c5': 'ttt'}]
Отредактировано marvellik (Июнь 8, 2016 20:53:36)
Офлайн