gpt4 book ai didi

python - 如何在方案中像 python 一样追加?

转载 作者:太空宇宙 更新时间:2023-11-03 18:44:57 24 4
gpt4 key购买 nike

像这样:

> (my-append (list 1 2) 3)
'(1 2 3)

我知道 racket 中的 append 实际上是连接两个列表。cons 只是将一个元素添加到列表的head 而不是 tail

有人对此有想法吗?

最佳答案

在 Pyton 中,append() 方法就地修改列表:

lst = [1, 2]
lst.append(3)

lst
=> [1, 2, 3]

默认情况下,Racket 的列表是不可变的,最接近就地 append() 的东西要求您使用可变列表,并且您必须将要追加的元素打包到它的列表中拥有:

(require scheme/mpair)

(define lst (mlist 1 2))
(mappend! lst (mlist 3))

lst
=> (mlist 1 2 3)

请注意,在 append 过程中使用不可变列表将生成一个新列表,而原始列表保持不变 - 因此它不会“像 Python”:

(define lst (list 1 2))
(append lst (list 3)) ; this returns the new list '(1 2 3)

lst
=> (list 1 2)

事实上,Scheme 的 append 过程的行为就像 Python 的 + 列表之间的操作:

lst = [1, 2]
lst + [3] # this returns the new list [1, 2, 3]

lst
=> [1, 2]

仔细想想,Python 的 append() 可能有一个误导性的名称 - 在大多数函数式编程语言中,追加操作总是定义在两个列表之间,而在 Python 中,它是列表和元素之间的操作。也许 add() 会是一个更好的名字,就像 Java 对 List 接口(interface)的 add() 操作一样。

关于python - 如何在方案中像 python 一样追加?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13743044/

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