Я искал какое-то время, но я не могу найти решение моей проблемы. Я все еще новичок в Python, поэтому я когда-нибудь борется с очевидными вещами ... Спасибо заранее за ваши советы!Python: remove() не работает
У меня есть список, содержащий объекты и дубликаты этих объектов, оба имеют определенные имена: objects_ext
и duplicatedObject_SREF_ext
. Я хочу, чтобы, если в моем списке есть дублированный объект, проверьте, находится ли исходный объект в списке, если он есть, удалите дублированный объект из списка.
Я попытался использовать метод remove()
, так как в списке может быть только одно вхождение каждого имени, но оно не работает. Вот мой код:
rawSelection = [u'crapacruk_high', u'doubidou_high', u'blahbli_high', u'crapacruk_SREF_high', u'doubidou_SREF_high', u'blahbli_SREF_high']
# objects with '_SREF_' in their names are the duplicated ones
for obj in rawSelection:
if '_SREF_' in str(obj):
rawName = str(obj).split('_')
rootName = rawName [0]
defName = rootName + '_' + '_'.join(rawName[2:])
if defName in rawSelection:
rawSelection.remove (obj)
# Always returns:
# [u'crapacruk_high', u'doubidou_high', u'blahbli_high', u'doubidou_SREF_high']
# Instead of:
# [u'crapacruk_high', u'doubidou_high', u'blahbli_high']
Edit: Ой, забыл сказать, что дублированный объект должен быть удален из списка, только если первоначальный один в нем тоже.
Не перебирайте список во время его изменения. Это никогда не сработает. –
Вам будет намного лучше просто создать объект 'set' из вашего объекта' list'. Он удалит дубликаты: 'newobj = set (mylist)' EDIT: nevermind. Не понял, что строки не идентичны. –
@Morgan Thrapp Есть ли у вас альтернатива? Может быть, с генератором? Спасибо – UKDP