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 中的名称]
想知道我在这里做错了什么,我正在尝试比较层次结构,以便在从两个单独的层次结构(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 中的名称]