我有一個列表,比方說X=[a,b,c,d,c,e,d]
,如何刪除每個字符中的一個,以便唯一的答案仍然是X1=[c,d]
。如何從序言列表中刪除除重複項以外的所有重複項
我有一堆只有字母的列表,我需要一個命令,如果列表中包含這樣的內容,就會刪除每個單一的一個字母,如果沒有那個字母,就什麼也不做。
我曾嘗試使用selectchk/3
,但它只適用於特定情況。
舉例來說,如果我有列表X=[a,b,c,d,d,e,e,f,f,g,h]
, 我可以寫selectchk(d,X,X1), selectchk(e,X1,X2), selectchk(f,X2,X3)
等
正如我所說的,針對特定的情況下,這只是工作,但如果我添加一般謂語,讓我們說我有selectchk/3
爲每一個字母,但是,例如, 新名單X1=[a,b,c,d,d]
我用selectchk(f,X,X3)
, 命令失敗,並沒有指定下一個列表X3
,所以不能運行,這在列表X3
檢查字母「G」下一個命令,因爲沒有這樣的清單。如果失敗,是否有可能執行OR命令?
X=[a,a,c,d,d,e]
selectchk(a,X,X1)
OR(如果沒有一個)append([],X,X1),selectchk(b,X1,X2)
OR(如果沒有 'B'),append([],X2,X3)
等
感謝
謝謝你,這對我來說非常有幫助,你的解決方案很容易理解,我仍然會更喜歡第一個。 – user3182929