[英]Python Remove All Elements in List Before Specific Element
我有一個列表,用於處理目錄上的一系列任務。 有時,該過程會卡在某個目錄中。 目前我正在刪除該元素並通過列表重新運行該過程。 然而,這需要一段時間。
這是我現在正在做的事情:
directories = next(os.walk('/home'))[1]
directories.remove('brokendirectory')
process_directory(directory)
我想要做的是刪除每個目錄,包括損壞的目錄,並且只在該損壞目錄之后的目錄列表上工作。 像這樣的東西:
def clear_list(directories, element):
new_list = []
for directory in directories:
if directory == element:
break
else:
new_list.append(directory)
return(new_list)
directories = next(os.walk('/home'))[1]
new_directories = clear_list(directories,'brokendirectory')
process_directory(new_directories)
顯然,我的函數不能按原樣工作。
如何刪除列表中的所有元素,包括指定的元素並返回一個新列表進行處理?
您可以使用列表的 index 方法找到所需元素的索引,然后使用切片刪除所有元素,包括它。
directories = directories[directories.index('brokendirectory')+1:]
找到損壞目錄的索引:
idx = directories.index('brokendirectory')
使用該索引來切片一個新列表:
new_directories = directories[idx+1:]
然后處理:
process_directory(new_directories)
您可以使用函數dropwhile
:
from itertools import dropwhile
l = 'ABCDEFG'
element = 'D'
list(dropwhile(lambda x: x != element, l))
# ['D', 'E', 'F', 'G']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.