First of all, checking the [QGIS API doc][1], I can see that the ranges method from the QgsGraduatedSymbolRendererV2 class returns a const QgsRangeList & probably meaning that you have little chance to modify its return value. Additionally, when looping the way you do in Python, you cannot modify a list's values as explained [here][2]. => twice impossible :) Fortunately, the solution directly comes from the QgsGraduatedSymbolRendererV2 class thanks to : renderer.updateRangeUpperValue(iRangeIndex,value) renderer.updateRangeLowerValue(iRangeIndex,value) The binding works correctly on my version (QGIS 2.8.2). The final code would look like this: limit = 0 step = 100 for i, range in enumerate(renderer.ranges()): renderer.updateRangeLowerValue(i,limit) renderer.updateRangeUpperValue(i,limit+step) limit+=step [1]: http://qgis.org/api/classQgsGraduatedSymbolRendererV2.html [2]: https://stackoverflow.com/questions/19290762/cant-modify-list-elements-in-a-loop-python