繁体   English   中英

只要列表中的项目相等,按现有顺序将列表的每个元素与第二个列表的元素进行比较

[英]Compare each element of a list in existing order with elements of a second list in order as long as items in lists are equal

只要列表中的项目相等,就将按现有顺序排列的列表的每个元素与按现有顺序排列的第二个列表的元素进行比较。 如果它们不相等,则停止并给我最后一场比赛的索引和名称。

我认为使用 while 循环很简单,但似乎必须使用 for 循环来处理。

我要比较的列表之一: nk_script_file_path

['P:', 'Projects', '2019_projects', '1910_My_Project', '01_Production_IN', '01_OFX', '01_Comp', '00_Nuke', 'relink_test_v001.nk']

我想将它与我的第二个列表进行比较: node_filepath

['P:', 'Projects', '2019_projects', '1910_My_Project', '02_Production_OUT', '01_OFX', '01_Comp', '00_Nuke', '040_ALY', '040_ALY_040_HROTERRORBLADE', '040_ALY_040_HROTERRORBLADE_prev_Gamma22_apcs_mov', '040_ALY_040_HROTERRORBLADE_prev_v14_Gamma22_apcs.mov']

我试过的

nk_script_file_path = r"P:/Projects/2019_projects/1910_My_Project/01_Production_IN/01_OFX/01_Comp/00_SO/relink_test_v001.nk".split("/")
node_filepath = r"P:/Projects/2019_projects/1910_My_Project/02_Production_OUT/01_OFX/01_Comp/00_S=/040_ALY/040_ALY_040_HROTERRORBLADE/040_ALY_040_HROTERRORBLADE_prev_Gamma22_apcs_mov/040_ALY_040_HROTERRORBLADE_prev_v14_Gamma22_apcs.mov".split("/")

# Compare file paths
path_object = 0
while nk_script_file_path in node_filepath:
    path_object += 1
print path_object
print node_filepath[path_object]

我正在寻找的结果:

"3"

或者

"1910_My_Project"

您可以使用zip()enumerate()来查找第一个索引的不同之处。 在这个例子中,如果没有发现差异, i值等于-1

lst1 = ['P:', 'Projects', '2019_projects', '1910_My_Project', '01_Production_IN', '01_OFX', '01_Comp', '00_Nuke', 'relink_test_v001.nk']
lst2 = ['P:', 'Projects', '2019_projects', '1910_My_Project', '02_Production_OUT', '01_OFX', '01_Comp', '00_Nuke', '040_ALY', '040_ALY_040_HROTERRORBLADE', '040_ALY_040_HROTERRORBLADE_prev_Gamma22_apcs_mov', '040_ALY_040_HROTERRORBLADE_prev_v14_Gamma22_apcs.mov']


for i, (a, b) in enumerate(zip(lst1, lst2)):
    if a != b:
        break
else:
    i = -1

print('First difference is at index:', i)

印刷:

First difference is at index: 4
nk_script_file_path= r"P:/Projects/2019_projects/1910_My_Project/01_Production_IN/01_OFX/01_Comp/00_SO/relink_test_v001.nk".split("/")
node_filepath = r"P:/Projects/2019_projects/1910_My_Project/02_Production_OUT/01_OFX/01_Comp/00_S=/040_ALY/040_ALY_040_HROTERRORBLADE/040_ALY_040_HROTERRORBLADE_prev_Gamma22_apcs_mov/040_ALY_040_HROTERRORBLADE_prev_v14_Gamma22_apcs.mov".split("/")
j = 0
for i in nk_script_file_path:
    if i != node_filepath[j] :
        j = j-1
        break
    else:
        j += 1

print(nk_script_file_path[j])
print(j)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM