Zum Hauptinhalt springen
ai-slop/python-range-len-loopmanuelle Behebung

range(len())-Schleife.

`for i in range(len(items)):` ist eine Indexschleife im C-Stil, wo Python direkte Iteration oder `enumerate` bietet.

Beanstandete und saubere Form.

Jedes Beispiel zeigt genau die Codeform, nach der die Regel sucht, und dann die kleinste Version, die die Absicht bewahrt, ohne Risiken zu verstecken oder Rauschen hinzuzufügen.

python-range-len-loop.py
✗ Beanstandet
names = []
for i in range(len(users)):
    names.append(users[i].name)
Warum das anschlägt

Deterministischer Zeilenabgleich: beanstandet `for name in range(len(seq)):`, wenn das Argument genau `len()` eines Namens oder eines Attributs mit Punktnotation ist. Gemeldet mit Schweregrad info.

python-range-len-loop.py
✓ Sauber
names = [user.name for user in users]

for position, user in enumerate(users, start=1):
    print_row(position, user.name)
Was sich geändert hat

Iteriere direkt (`for item in items`), nutze `enumerate(items)`, wenn du zusätzlich den Index brauchst, und `zip`, wenn du zwei Sequenzen gemeinsam durchläufst.

Agenten übernehmen die Gewohnheit der Indexschleife aus anderen Sprachen und behalten die Index-Mechanik bei, selbst wenn der Rumpf nur `items[i]` liest.

Wie diese Regel begründet ist.

Regel-ID

ai-slop/python-range-len-loop

Prüfende Engine

ai-slop

Erkennungsstrategie

Deterministischer Zeilenabgleich: beanstandet `for name in range(len(seq)):`, wenn das Argument genau `len()` eines Namens oder eines Attributs mit Punktnotation ist. Gemeldet mit Schweregrad info.

Legitimer Code, der NICHT beanstandet wird

Direkte Iteration, `enumerate(...)` und Ranges mit Offset oder Schrittweite wie `range(1, len(x))` oder `range(len(x) - 1)` werden nicht beanstandet.

Belege

Eingeführt in aislop v0.9.4 als eine von vier Python-Geschwätzigkeitsregeln, abgeleitet aus SlopCodeBench (arXiv 2603.24755).