gpt4 book ai didi

lambda - Prolog:从成对列表中提取单个列表

转载 作者:行者123 更新时间:2023-12-02 04:44:57 25 4
gpt4 key购买 nike

我有一个对列表:[{1, a}, {2, b}, {3, c}, {4, d}]

我怎样才能提取每对的第二个元素并使其成为一个单独的列表?

所以:[a,b,c,d]

抱歉,我是 Prolog 的新手,四处寻找答案,但找不到。

最佳答案

您显示的不是配对列表。这是:

[1-a, 2-b, 3-c, 4-d].

有了这个列表,您可以:

?- pairs_values([1-a, 2-b, 3-c, 4-d], V).
V = [a, b, c, d].

?- pairs_keys([1-a, 2-b, 3-c, 4-d], K).
K = [1, 2, 3, 4].

一个谓词会明确地:

seconds([], []).
seconds([_A-B|Pairs], [B|Secs]) :-
seconds(Pairs, Secs).

如果你坚持,当然:

secs([], []).
secs([{_A, B}|Pairs], [B|Secs]) :-
secs(Pairs, Secs).

但是您可以自己决定什么最有效,请记住:

?- write_canonical({1,a}).
{}(','(1,a))
true.

?- write_canonical(1-a).
-(1,a)
true.

关于 Prolog 的好 Material ,等等:

  • Amzi Inc. Adventure in Prolog(网络)
  • 立即学习 Prolog! (网络)
  • “Prolog 的艺术”,Sterling 和 Shapiro(书籍)。

关于lambda - Prolog:从成对列表中提取单个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19977404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com