簡體   English   中英

Python在特定元素之前刪除列表中的所有元素

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM