在 Scheme 中,如果您有一个配对列表,例如:
((4 . 7) (4 . 9))
这基本上不是 2 个元素元组的列表吗?所以如果你用python写这个,会不会是这样的:
[[4, 7], [4,9]]
还是[(4, 7), (4,9)]
?
我希望它尽可能接近python。或者创建一个类会更接近?
在 Scheme 术语中,将 pair 称为二元素元组是没有意义的,因为这意味着在 Scheme 中存在三元素元组或四元素元组之类的东西,但实际上并没有。
也就是说,与 Scheme 对最接近的 Python 概念确实是一个二元素元组。对列表绝对不同于列表列表。
哦,回答你在标题中暗示的问题:
在 Scheme 中,列表要么是空列表 ( ()
),要么是第二个元素是列表的对。所以每个列表都是一对,但有些对不是列表。例如,该对(1 . (2 . ()))
是一个列表(通常写为(1 2)
),但该对(1 . 2)
不是一个列表,因为2
它不是一个列表。
这些都不适用于 Python。Python 列表是可增长的数组——不是由对/元组组成的链表。
scheme(pair) 和 python(tuple) 有很多不同,比如 tuple 是不可变的,而其他的不是,pair 返回 0 当它不是一对但 tuple 可以代表一个值 (x,) 等等。
阅读:http ://www.tutorialspoint.com/python/python_tuples.htm (对于python) http://www.gnu.org/software/guile/manual/html_node/Pairs.html(对于Scheme)
:)