スキームでは、次のようなペアのリストがある場合:
((4 . 7) (4 . 9))
これは基本的に2つの要素のタプルのリストではありませんか?したがって、これをPythonで作成すると、次のようになります。
[[4, 7], [4,9]]
または[(4, 7), (4,9)]
?
Pythonにできるだけ近づけてほしい。それとも、クラスを作成することはさらに近くなりますか?
Schemeの用語では、ペアを2要素タプルと呼ぶのは意味がありません。Schemeには3要素タプルや4要素タプルなどがあることを意味しますが、そうではありません。
つまり、Schemeペアに最も近いPythonの概念は、実際には2要素のタプルになります。ペアのリストは、リストのリストとはまったく同じではありません。
ああ、あなたがあなたのタイトルで暗示した質問に答えるために:
スキームでは、リストは空のリスト(()
)または2番目の要素がリストであるペアのいずれかです。したがって、すべてのリストはペアですが、一部のペアはリストではありません。たとえば、ペア(1 . (2 . ()))
はリスト(より一般的にはと表記)ですが、はリストではないため(1 2)
、ペアはリストではありません。(1 . 2)
2
これはPythonには当てはまりません。Pythonリストは拡張可能な配列であり、ペア/タプルで作成されたリンクリストではありません。
スキーム(ペア)とPython(タプル)には多くの違いがあります。タプルは不変であり、他は不変であるように、ペアはペアではない場合は0を返しますが、タプルは1つの値(x、)などで立つことができます。
読む:http ://www.tutorialspoint.com/python/python_tuples.htm (pythonの場合) http://www.gnu.org/software/guile/manual/html_node/Pairs.html(Schemeの場合)
:)