Scheme中的pair和Python中的tuple有什么区别?
在Scheme语言中,如果你有一个包含成对元素的列表,比如:
((4 . 7) (4 . 9))
这不就是一个包含两个元素的元组的列表吗?那么如果你想用Python来写,这会是:
[[4, 7], [4, 9]]
还是 [(4, 7), (4, 9)]
呢?
我希望它能尽量接近Python的写法。或者说,创建一个类会更接近吗?
2 个回答
2
在Scheme语言中,把一对元素称作二元组其实是不太合适的,因为这会让人觉得Scheme里还有三元组或四元组,但实际上并没有。
不过,Python中最接近Scheme中一对元素的概念确实是二元组。一个包含多个对的列表和一个包含多个列表的列表是完全不同的东西。
哦,对了,关于你标题里提到的问题:
在Scheme中,一个列表要么是空列表(()
),要么是一个对,其中第二个元素是一个列表。所以每个列表都是一个对,但并不是所有的对都是列表。例如,(1 . (2 . ()))
这个对是一个列表(通常写作(1 2)
),但(1 . 2)
这个对就不是列表,因为2
不是一个列表。
这些内容在Python中并不适用。Python的列表是可扩展的数组,而不是由对或元组组成的链表。