Python:比较 C4D 中的层次结构

Python: Comparing Hierarchies in C4D

想知道我在这里做错了什么,我正在尝试比较层次结构,以便在从两个单独的层次结构(first_sel_list 和 second_sel_list) 我在精简列表中得到了额外的结果。

    first_sel_list = ['First_Null', 'Cube', 'Cube.1', 'Cube.2', 'Cube.3', 'Cube.4', 'Cube.5', 'Cube.6', 'Ignore_Top_0', 'Ignore_Top_1', 'Ignore_Top_2', 'Ignore_Top_Child_00', 'Ignore_Top_Child_01', 'Ignore_Top_Child_02', 'Ignore_Top_Child_03', 'Cube.7']
    
    second_sel_list = ['Second_Null', 'Cube', 'Cube.1', 'Cube.2', 'Cube.3', 'Shit_Bot_0', 'Ignore_Bot_1', 'Ignore_Bot_2', 'Cube.4', 'Cube.6', 'Cube.7', 'Cube.5']
    
    link_list = ['Cube', 'Cube.1', 'Cube.2', 'Cube.3', 'Cube.4', 'Cube.5', 'Cube.6', 'Cube.7']
    
    for name in first_sel_list:
        if name not in link_list:
            first_sel_list.remove(name)
    for name in second_sel_list:
        if name not in link_list:
            second_sel_list.remove(name)
                
    
    print ('LINK LIST ' + str(link_list))        
    print ('Edited First list ' + str(first_sel_list))
    print ('Edited Second list ' + str(second_sel_list))

输出:

LINK LIST ['Cube', 'Cube.1', 'Cube.2', 'Cube.3', 'Cube.4', 'Cube.5', 'Cube.6', 'Cube.7']
Edited First list ['Cube', 'Cube.1', 'Cube.2', 'Cube.3', 'Cube.4', 'Cube.5', 'Cube.6', 'Ignore_Top_1', 'Ignore_Top_Child_00', 'Ignore_Top_Child_02', 'Cube.7']
Edited Second list ['Cube', 'Cube.1', 'Cube.2', 'Cube.3', 'Ignore_Bot_1', 'Cube.4', 'Cube.6', 'Cube.7', 'Cube.5']

预期输出:

LINK LIST ['Cube', 'Cube.1', 'Cube.2', 'Cube.3', 'Cube.4', 'Cube.5', 'Cube.6', 'Cube.7']
Edited First list ['Cube', 'Cube.1', 'Cube.2', 'Cube.3', 'Cube.4', 'Cube.5', 'Cube.6', 'Cube.7']
Edited Second list ['Cube', 'Cube.1', 'Cube.2', 'Cube.3', 'Cube.4', 'Cube.6', 'Cube.7', 'Cube.5']

层次结构图片:

试试这个而不是 not in 子句。不必担心不在列表中的元素有时会引发删除问题,您只需获取具有直接引用的元素。总的来说比较安全。

first_sel_list = [first_sel_list 中的名称如果 link_list 中的名称]

second_sel_list = [second_sel_list 中的名称如果 link_list 中的名称]