@Dvdscot: Im ersten Fall fügst Du die Zahlen an den Anfang der äusseren Liste an, und im zweiten Fall alle an die erste Liste, weil da ein fester Index 0 steht.
Man sollte in der Regel aber lieber neue Datenstrukturen erstellen, als bestehende zu verändern. Ginge beispielsweise so:
Code: Alles auswählen
In [5]: items
Out[5]: [[1, 'a', 'b'], [1, 'a', 'b'], [1, 'a', 'b'], [1, 'a', 'b']]
In [6]: [[i, *item] for i, item in enumerate(items)]
Out[6]: [[0, 1, 'a', 'b'], [1, 1, 'a', 'b'], [2, 1, 'a', 'b'], [3, 1, 'a', 'b']]
Ich habe so ein bisschen den Verdacht das die inneren Listen Datensätze sind in denen die Position des Elements bestimmt was dieses Element bedeutet und die Elemente in einer inneren Liste nicht alle den gleichen Typ und/oder die gleiche Bedeutung haben — das wäre ein „code smell“, denn dafür benutzt man keine Listen, denn das Indexwerte eine magische Bedeutung haben ist unübersichtlich. Wenn man dann noch Elemente vorne oder mitten drin anfügt, hat noch nicht mal mehr ein Indexwert eine feste Bedeutung, denn dadurch verschieben die sich ja.
Grunddatentypen wie `list`/`liste` gehören nicht in Namen. Denn den Typen ändert man gerne auch mal auf was spezielleres oder gar was selbst geschriebenes, und dann hat man entweder falsche, irreführende Namen oder muss überall die betroffenen Namen suchen und ändern.