我有一个list of lists
,其中有我所有训练图像的路径,如下图所示。
from pathlib import Path
image_list = [[Path('/home/0_knowle/Desktop/project/data/train/Image/Folder_1/Image_033_S_0724_Img_Na__Ma_F_.png'),
Path('/home/0_knowle/Desktop/project/data/train/Image/Folder_2/Image_033_S_0724_Img_Na__Ma_F_.png')],
[Path('/home/0_knowle/Desktop/project/data/train/Image/Folder_1/Image_033_S_0733_Img_Na__Ma_F_.png'),
Path('/home/0_knowle/Desktop/project/data/train/Image/Folder_2/Image_033_S_0733_Img_Na__Ma_F_.png')],
[Path('/home/0_knowle/Desktop/project/data/train/Image/Folder_1/Image_034_S_0733_Img_Na__Ma_F_.png'),
Path('/home/0_knowle/Desktop/project/data/train/Image/Folder_2/Image_034_S_0733_Img_Na__Ma_F_.png')]
]
现在,我想根据路径的一部分(特别是路径的最后一部分(从列表中删除一个项目。比方说,我想从列表中删除一个名称以Image_033_S_0733...
开头的元素。
我试着
final_list = []
for sub_list in listA:
for sub_sub_list in sub_list:
if "Image_033_S_0733" not in sub_sub_list.name:
final_list.append(sub_sub_list)
我得到的是一个平面列表,而不是列表列表。image_list
的形状为(77, 2)
。预期的输出是(从列表列表中删除该项之后((76, 2)
,但我得到的是(228, )
。
是否可以从PosixPath列表中删除项目?
使用.name
属性从Path
对象获取文件名。
因此,将循环或列表理解中的条件替换为:
'Image_044_S' not in item.name
若要在结果上获得嵌套循环,请使用嵌套列表理解。
final_list = [
[item for item in sub_list if "Image_033_S_0733" not in item.name]
for sub_list in image_list]