私は Python で遊んでいました。IDLE で次のコードを使用しました。
p = [1, 2]
p[1:1] = [p]
print p
出力は次のようになりました。
[1, [...], 2]
これは何ですか[…]
?興味深いことに、これを無限大までのリストのリストとして使用できます。
p[1][1][1]....
上記を好きなだけ書いても、まだ機能します。
編集:
- 記憶の中ではどのように表現されるのでしょうか?
- それは何に使われますか?それが役に立ついくつかのケースの例があると助かります。
- 公式ドキュメントへのリンクがあれば本当に役立ちます。
ベストアンサー1
これがあなたのコードが作成したものです
これは、最初と最後の要素が 2 つの数値 (1 と 2) を指し、中央の要素がリスト自体を指しているリストです。
Common Lispでは、円形構造の印刷が有効になっている場合、このようなオブジェクトは次のように印刷されます。
#1=#(1 #1# 2)
#1=
つまり、3 つの要素を持つベクトルであるオブジェクト ( でラベル 1 が付けられている) があり、2 番目はオブジェクト自体 ( で後方参照されている#1#
)であることを意味します。
Python では、代わりに を使用して、構造が循環的であるという情報を取得するだけです[...]
。
この特定のケースでは、説明は曖昧ではありません(リストを後方に指していますが、リストは1つしかないので、そのリストでなければなりません)。ただし、他のケースでは曖昧になる場合があります...たとえば、
[1, [2, [...], 3]]
後方参照は外側のリストか内側のリストのどちらかを指すことができます。同じ方法で印刷されるこれら2つの異なる構造は、次のように作成できます。
x = [1, [2, 3]]
x[1][1:1] = [x[1]]
y = [1, [2, 3]]
y[1][1:1] = [y]
print(x)
print(y)
そして彼らは記憶の中に