簡體   English   中英

Python使用特定字符串從未知列表中刪除元素

[英]Python remove elements from unknown list with a specific string

有與此類似的問題,但不是我想要的。

創建了包含來自特定路徑的所有文件的列表后,我試圖過濾掉字符串中不包含特定序列的任何內容。

def filter():
    someFiles = os.listdir(somePath)
    listSize = len(someFiles)

    for i in range(0, listSize):
        if (".py" not in someFiles):
            someFiles.remove(i)
            print("{0}".format(someFiles))

我知道我不應該通過循環來修改列表的大小,但是我只是為了大致了解我要完成的工作而離開了列表

我沒有說清楚,我面臨的問題是我不確定在嘗試刪除不包含“ .py”的每個元素時應該采用哪種方法。 我在上面寫的只是草稿。

for i in range(0, listSize):
    if (".py" not in someFiles):
        someFiles.remove(i)

請注意,您正在嘗試從列表中刪除i i將在列表中(的元素的索引01 ,等等),而不是實際的元件。 這將引發錯誤。


只需使用列表理解只得到所需要的文件:

required_files = [f for f in someFiles if '.py' in f]

您還可以使用filter但是它需要一個lambda(還要注意,它將返回一個filter對象而不是一個list ):

required_files = list(filter(lambda x: '.py' in x, someFiles))

首先,您不需要使用for循環來迭代Python中的列表。 您所做的工作的簡單版本是

list2 = []
for filename in list1:
    if (".py" in filename):
        list2.append(filename)

但是過濾列表(或更普遍地講,是迭代器)非常普遍,以至於有Python內置函數叫做filter

list2 = list(filter(lambda i: ".py" in i, list1))

(這至少在Python3中有效)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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