背景複雜列表操作
我有下面的代碼,將取出第一列表元素中的內部列表。
實施例: getFirstElement([[1,DATA1],[[2,DATA2],[3,DATA3],[[4,DATA4],[5,DATA5]]]],O) Ø會返回爲[2]。
getFirstElement([H | T], [X| Tn]) :-
[[X, _] | _] = H.
getFirstElement([H | T], O) :-
getFirstElement(H, O) ;
getFirstElement(T, O).
問:
如何擴展功能,以便將返回所有occurenses的列表,而不是僅僅是第一次?有用輸出的
實施例:
getFirstElement([[1,DATA1],[[2,DATA2],[3,DATA3],[[4,DATA4],[5,DATA5]]]] ,O)。 O將返回[2,4]。
你是什麼意思「內部列表中的第一個元素」?爲什麼你需要這樣一個複雜的嵌套列表?你意識到'[1,2,3]'實際上是'。(1,。(2,。(3,[])))',對吧?你顯示的嵌套列表奇怪地類似於「平面」列表的嵌套項。 –
@boris您的權利,我試圖刪除所有非法的數據,以便使問題更容易理解,我現在改爲普通結構。問題是我必須跟蹤內部列表發生的位置,而我的方法是在發生嵌套列表時存儲第一個元素,如[2,data2]和[4,data4]中發生的示例 – LamaCoder
仍然不存在不明白你的答案中的「1」不合格。是否因爲它不是列表中列表中第一個元素的第一個元素?順便說一句,這是一個非常複雜的結構,你確定你需要它嗎?它背後的理由是什麼? –