【发布时间】:2021-02-13 02:20:21
【问题描述】:
我有一个包含特定文件路径的列表,例如
path_list =['Animals/dog_00238/2D_rendering/131/view/full/0',
'Animals/dog_00238/2D_rendering/131/view/full/1',
'Animals/dog_00238/2D_rendering/131/view/full/2',
'Animals/dog_00238/2D_rendering/906271/view/full/1',
'Animals/dog_00239/2D_rendering/906271/view/full/2',
'Animals/dog_00239/2D_rendering/965947/view/full/0',
'Animals/dog_00239/2D_rendering/965947/view/full/1',
'Animals/dog_00239/2D_rendering/965947/view/full/2',<------ Last time dog_00239 appears #first break point
'Animals/dog_00240/2D_rendering/965947/view/full/3',
'Animals/dog_00240/2D_rendering/982160/view/full/0',
'Animals/dog_00240/2D_rendering/982160/view/full/1',
'Animals/dog_00241/2D_rendering/982160/view/full/2',
'Animals/dog_00241/2D_rendering/141/view/full/0',
'Animals/dog_00241/2D_rendering/141/view/full/1',<------ Last time dog_00241 appears #Second breakpoint
'Animals/dog_00242/2D_rendering/1881/view/full/3',
'Animals/dog_00242/2D_rendering/1881/view/full/4',
'Animals/dog_00242/2D_rendering/2487/view/full/0',
'Animals/dog_00242/2D_rendering/2487/view/full/1',]
我想做的是将此列表拆分为 3 个新的较小列表。
第一个列表将从开始到第一个断点
Fisrt_list = ['Animals/dog_00238/2D_rendering/131/view/full/0',
'Animals/dog_00238/2D_rendering/131/view/full/1',
'Animals/dog_00238/2D_rendering/131/view/full/2',
'Animals/dog_00238/2D_rendering/906271/view/full/1',
'Animals/dog_00239/2D_rendering/906271/view/full/2',
'Animals/dog_00239/2D_rendering/965947/view/full/0',
'Animals/dog_00239/2D_rendering/965947/view/full/1',
'Animals/dog_00239/2D_rendering/965947/view/full/2',]<------ Last time dog_00239 appears #first break point
第二个列表将在第一个断点之后直到第二个断点
second_list = ['Animals/dog_00240/2D_rendering/965947/view/full/3',
'Animals/dog_00240/2D_rendering/982160/view/full/0',
'Animals/dog_00240/2D_rendering/982160/view/full/1',
'Animals/dog_00241/2D_rendering/982160/view/full/2',
'Animals/dog_00241/2D_rendering/141/view/full/0',
'Animals/dog_00241/2D_rendering/141/view/full/1',]<------ Last time dog_00241 appears #Second breakpoint
第三个列表将在第二个断点之后直到结束
third_list = ['Animals/dog_00242/2D_rendering/1881/view/full/3',
'Animals/dog_00242/2D_rendering/1881/view/full/4',
'Animals/dog_00242/2D_rendering/2487/view/full/0',
'Animals/dog_00242/2D_rendering/2487/view/full/1',]
到目前为止,我尝试的是,我创建了一个 for 循环,并在满足 if 条件时将其中断,然后查看我得到的结果,例如:
new_paths = []
fisrt_breakpoint = 'dog_00239'
for i in range (len(path_list)):
new_paths.append(path_list[i])
if fisrt_breakpoint in path_list:
break
这确实拆分了列表并保留了其中的一小部分,但它保留在 new_paths 中的是我设置的断点之后的元素,而不是该断点之前的元素。但我也无处设置条件,因为我不知道该怎么做,在这个词最后一次出现在这个列表中时用作断点,因为我假设即使上面的代码有效,它也会拆分它第一次看到“dog_00239”这个词。
我也试过了:
new_paths = [x for x in path_list if first_breakpoint in x]
但这会获取所有包含“dog_00239”的项目,而我想要做的是让所有内容都到此为止。
提前感谢您的宝贵时间, 我真的很感激任何帮助,对于任何错误,或者我对我的问题不是很清楚,因为我是这里和 Python 的新手。
【问题讨论】: