我需要將列表的內容與給定模式匹配,並形成另一個列表,除了匹配之外,它將包含所有內容。意思是,我正在嘗試做一個排除列表。從列表中查找和排除多個匹配的邏輯
現在有了一個模式匹配,很容易。但對於更多的人來說,這變得棘手。
讓我們來看一個例子:
Lmain=[arc123, arc234,xyz111,xyz222,ppp999,ppp888]
for count in range(len[Lmain]):
if Pattern matches Lmain[i]:
Pass
else:result.append(Lmain[i])
現在讓我們說模式=圓弧,我的結果將是
result = [xyz111,xyz222,ppp999,ppp888]
這僅僅是一個邏輯,在這裏我將使用常規EXPR尋找匹配。
現在,如果我們有2種模式,然後在循環中使用上面的邏輯:
Pattern=['arc','xyz']
for pat in Pattern:
if pat matches Lmain[i]:
Pass
else:result.append(Lmain[i])
這會給我們錯誤的結果
result = [xyz111,xyz222,ppp999,ppp888,arc123,arc234,ppp999,ppp888]
所以,你可以看到上面的邏輯只是不會工作。
我的計劃:
首先,我們發現排除列表第一圖案,這將給我們造成:
result = [xyz111,xyz222,ppp999,ppp888]
對於第二個模式,我們需要將目光轉向上述結果。
if Pattern matches Result[i]:
Pass
else:result_final.append(Result[i])
我想我們需要使用遞歸來實現上面的邏輯。現在我們該怎麼做? 另外我們不知道用戶將要輸入的模式數量。它可以是一個或多個。
任何人有任何邏輯思想,然後請分享。
能否請您使用真正的Python代碼爲您的例子嗎? – geoffspear