回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我有一个集合列表,<code>mergeList</code>,我使用下面的代码在mergeList中合并那些具有非空交集的集合。但是它不会合并所有有交集的集合,也就是说,在while循环之后,列表中仍然有一些集合有交集。在</p>
<pre><code>mergeList = [set([0.5]), set([1.5]), set([2.5]), set([3.5]), set([4.5]), set([5.5]), set([2.5, 6.5]), set([6.5]), set([1.5, 7.5]), set([7.5]), set([8.5]), set([0.5, 9.5]), set([9.5]), set([10.5]), set([11.5]), set([12.5]), set([13.5]), set([2.5, 14.5]), set([14.5]), set([8.5, 15.5]), set([15.5]), set([16.5]), set([15.5, 17.5]), set([13.5, 17.5]), set([17.5]), set([8.5, 18.5]), set([18.5]), set([11.5, 19.5]), set([19.5]), set([4.5, 20.5]), set([10.5, 20.5]), set([20.5]), set([8.5, 21.5]), set([21.5]), set([3.5, 22.5]), set([8.5, 22.5]), set([22.5]), set([11.5, 23.5]), set([23.5]), set([12.5, 24.5]), set([24.5]), set([19.5, 25.5]), set([25.5]), set([12.5, 26.5]), set([26.5]), set([27.5]), set([0.5, 28.5]), set([9.5, 28.5]), set([28.5]), set([11.5, 29.5]), set([23.5, 29.5]), set([29.5]), set([5.5, 30.5]), set([30.5]), set([5.5, 31.5]), set([31.5]), set([2.5, 32.5]), set([32.5]), set([16.5, 33.5]), set([33.5]), set([2.5, 34.5]), set([34.5]), set([2.5, 35.5]), set([16.5, 35.5]), set([35.5]), set([12.5, 36.5]), set([9.5, 36.5]), set([36.5]), set([11.5, 37.5]), set([19.5, 37.5]), set([27.5, 37.5]), set([37.5]), set([38.5]), set([39.5]), set([34.5, 40.5]), set([2.5, 40.5]), set([40.5]), set([29.5, 41.5]), set([41.5]), set([13.5, 42.5]), set([17.5, 42.5]), set([42.5]), set([4.5, 43.5]), set([43.5]), set([5.5, 44.5]), set([44.5]), set([43.5, 45.5]), set([45.5]), set([36.5, 46.5]), set([46.5]), set([19.5, 47.5]), set([47.5]), set([13.5, 48.5]), set([48.5]), set([11.5, 49.5]), set([29.5, 49.5]), set([49.5]), set([9.5, 50.5]), set([50.5]), set([30.5, 51.5]), set([1.5, 51.5]), set([51.5]), set([35.5, 52.5]), set([2.5, 52.5]), set([6.5, 52.5]), set([16.5, 52.5]), set([52.5]), set([53.5]), set([43.5, 54.5]), set([4.5, 54.5]), set([54.5]), set([2.5, 55.5]), set([55.5]), set([1.5, 56.5]), set([56.5]), set([8.5, 57.5]), set([57.5]), set([38.5, 58.5]), set([58.5]), set([13.5, 59.5]), set([48.5, 59.5]), set([59.5]), set([10.5, 60.5]), set([20.5, 60.5]), set([60.5]), set([61.5]), set([9.5, 62.5]), set([62.5]), set([47.5, 63.5]), set([25.5, 63.5]), set([63.5]), set([0.5, 64.5]), set([64.5]), set([46.5, 65.5]), set([65.5]), set([16.5, 66.5]), set([35.5, 66.5]), set([66.5]), set([15.5, 67.5]), set([17.5, 67.5]), set([67.5]), set([16.5, 68.5]), set([68.5]), set([53.5, 69.5]), set([69.5]), set([0.5, 70.5]), set([70.5]), set([51.5, 71.5]), set([1.5, 71.5]), set([71.5]), set([70.5, 72.5]), set([0.5, 72.5]), set([72.5]), set([69.5, 73.5]), set([73.5]), set([1.5, 74.5]), set([56.5, 74.5]), set([74.5]), set([10.5, 75.5]), set([75.5]), set([14.5, 76.5]), set([2.5, 76.5]), set([76.5]), set([19.5, 77.5]), set([77.5]), set([2.5, 78.5]), set([58.5, 78.5]), set([40.5, 78.5]), set([78.5]), set([0.5, 79.5]), set([72.5, 79.5]), set([79.5]), set([39.5, 80.5]), set([80.5]), set([29.5, 81.5]), set([41.5, 81.5]), set([81.5]), set([19.5, 82.5]), set([82.5]), set([37.5, 83.5]), set([11.5, 83.5]), set([19.5, 83.5]), set([83.5]), set([11.5, 84.5]), set([84.5]), set([27.5, 85.5]), set([45.5, 85.5]), set([85.5]), set([64.5, 86.5]), set([0.5, 86.5]), set([86.5]), set([65.5, 87.5]), set([9.5, 87.5]), set([46.5, 87.5]), set([36.5, 87.5]), set([87.5]), set([38.5, 88.5]), set([88.5]), set([34.5, 89.5]), set([58.5, 89.5]), set([89.5]), set([4.5, 90.5]), set([90.5]), set([12.5, 91.5]), set([26.5, 91.5]), set([91.5]), set([64.5, 92.5]), set([92.5]), set([3.5, 93.5]), set([22.5, 93.5]), set([8.5, 93.5]), set([93.5]), set([0.5, 94.5]), set([94.5]), set([48.5, 95.5]), set([42.5, 95.5]), set([13.5, 95.5]), set([95.5]), set([19.5, 96.5]), set([96.5]), set([12.5, 97.5]), set([91.5, 97.5]), set([97.5]), set([20.5, 98.5]), set([4.5, 98.5]), set([98.5]), set([8.5, 99.5]), set([99.5]), set([16.5, 100.5]), set([66.5, 100.5]), set([100.5])]
while i < len(mergeList):
for j in range(len(mergeList) - 1, i, -1):
if not mergeList[i].isdisjoint(mergeList[j]):
mergeList[i] = mergeList[i].union(mergeList[j])
del mergeList[j]
</code></pre>
<p>你知道这里有什么问题吗?在</p>
<p>更新:我为示例添加了一些数据,我希望这不会使问题变得复杂。在</p>