0

n ヒープを作成して使用する必要があります。heapq を使用しようとしており、各要素が個別のヒープと見なされるリストのリストに要素をプッシュしようとしています。しかし、その動作は奇妙です。要素 6 と 7 を 3 番目のヒープにプッシュしたいだけです。しかし、それは私のすべてのヒープに押し込まれています。これから抜け出す方法はありますか??

>>> test
[[], [], [], []]
>>> 
>>> heappush(test[2],6)
>>> heappush(test[2],7)
>>> test
[[6, 7], [6, 7], [6, 7], [6, 7]]
4

2 に答える 2

3

test次のようなものを作成したようです。

>>> from heapq import heappush
>>> test = [[]] * 4
>>>
>>> heappush(test[2],6)
>>> heappush(test[2],7)
>>> test
[[6, 7], [6, 7], [6, 7], [6, 7]]

これにより、同じリスト オブジェクトへの 4 つの参照が作成されます。リスト内包表記を使用して、4 つの異なるリストを作成します。

>>> test = [[] for _ in range(4)]
>>> heappush(test[2],6)
>>> heappush(test[2],7)
>>> test
[[], [], [6, 7], []]
于 2013-04-27T11:17:33.297 に答える