整数からなるリストを比較しようとすると、Pythonで奇妙なことがわかりました。例えばpythonでid()を使ったリスト(整数)を比較する
:
In [35]: id(range(1,5)),id(range(1,15)),id(range(16,0,-1))
Out[35]: (155687404, 155687404, 155687404)
Q1: なぜ彼らのID()の値は同じですか?そして彼らは異なって見えるので、彼らはどのように同じになることができますか?
Q2: どのようにして整数のリストをid()値で比較できますか?
Q3: さらに好奇心をそそるために、id()値はどのように計算されますか? Pythonのドキュメントから直接
? –
@FrédéricHamidi私はちょうどそう思い出した。そして、hash()とid()は異なっています。思い出してくれてありがとう。 – xiaohan2012
2つの範囲が同じであっても、同じidを持つと思う理由はありません。例えば、x = range(5); y = range(5); id(x)== id (y) 'を返すと、' False'を返します。また、Python 2では 'range'はリストを返します。リストはハッシュできません。平等をテストするだけで何が問題になりますか? – James