Normalerweise versuche ich so oft wie möglich:
Code: Alles auswählen
for record in list:
print(record)
Code: Alles auswählen
for i in range(len(list)):
print(list[i])
Danke im Vorraus, Chaostheorie
Code: Alles auswählen
for record in list:
print(record)
Code: Alles auswählen
for i in range(len(list)):
print(list[i])
Code: Alles auswählen
def do_something(data):
for record in data:
print(record)
Code: Alles auswählen
2 0 SETUP_LOOP 20 (to 22)
2 LOAD_FAST 0 (data)
4 GET_ITER
>> 6 FOR_ITER 12 (to 20)
8 STORE_FAST 1 (record)
3 10 LOAD_GLOBAL 0 (print)
12 LOAD_FAST 1 (record)
14 CALL_FUNCTION 1
16 POP_TOP
18 JUMP_ABSOLUTE 6
>> 20 POP_BLOCK
>> 22 LOAD_CONST 0 (None)
24 RETURN_VALUE
Code: Alles auswählen
def do_something(data):
for i in range(len(data)):
print(data[i])
Code: Alles auswählen
2 0 SETUP_LOOP 32 (to 34)
2 LOAD_GLOBAL 0 (range)
4 LOAD_GLOBAL 1 (len)
6 LOAD_FAST 0 (data)
8 CALL_FUNCTION 1
10 CALL_FUNCTION 1
12 GET_ITER
>> 14 FOR_ITER 16 (to 32)
16 STORE_FAST 1 (i)
3 18 LOAD_GLOBAL 2 (print)
20 LOAD_FAST 0 (data)
22 LOAD_FAST 1 (i)
24 BINARY_SUBSCR
26 CALL_FUNCTION 1
28 POP_TOP
30 JUMP_ABSOLUTE 14
>> 32 POP_BLOCK
>> 34 LOAD_CONST 0 (None)
36 RETURN_VALUE
Keine der beiden Varianten ist eine List Comprehension. Es handelt sich im Falle von Python immer um for-each-Schleifen, d.h. die Elemente werden beim Schleifendurchlauf direkt geliefert. Im Gegensatz zur klassischen for-Schleife muss man die also nicht mehr per Indexzugriff ansprechen. Bei deiner "Simulation" der klassischen Schleife nutzt du eine for-each-Schleife über die Rückgabe von range() und die gelieferten Zahlen für den anschließenden Indexzugriff. Das ist unnötig umständlich, zeitaufwändiger und schlechter zu lesen. Daher besser gar nicht erst angewöhnen.Chaostheorie hat geschrieben: ↑Freitag 11. Oktober 2019, 21:21 Ich arbeite seit kürzerem mit einem großen Dataset und wollte aufgrund meines schwächelnden PS's vorallem bei Schleifen durch list comprehensions Zeit sparen aber ich frage mich welche der Bieden oben genannten Varianten besser währe.