我需要更新循环中的列表
我在场景中有一些对象,如果它们符合if条件,则需要删除其中的一些对象。这些对象有子对象,我需要从子对象名称中删除最近从场景和列表中删除的对象
例如:
name2
-我需要删除的对象
name1|name2|name3
-name2
的子级
name1|name3
-删除name2
后name3
的名称
listA = [u'|Trunk|Branch_ext|C',
u'|Trunk|Branch_ext',
u'|Trunk|Branch|A',
u'|Trunk|Branch|B',
u'|Trunk|Branch_ext|Branch|D',
u'|Trunk|Branch_ext|Branch|E',
u'|Trunk']
for obj in listA:
print '================',obj
print 'list length = {}'.format(len(listA))
trashBin = []
listAUpd = []
shortName = obj.split('|')[-1] # A, B, C, Branch_ext etc
objToDelete = 'Branch_ext'
# collect match objects to trashBin
if objToDelete in shortName:
trashBin.append(obj)
if trashBin:
# remove trashBin items form list_A
res = list(set(listA) - set(trashBin))
listA = res
# remove deleted object names from objects path
for item in listA:
if objToDelete in item:
listAUpd.append(item.replace('|'+ objToDelete + '|', '|' ))
else:
listAUpd.append(item)
listA = listAUpd
print listA
print 'list length = {}'.format(len(listA))
嗯。。看起来您只是想操纵一些字符串。你就不能这样做吗:
如果您想在循环中完成,有几种方法,但最清晰的方法如下(使用haggi krey的示例,但基于您的预期结果):
相关问题 更多 >
编程相关推荐