[Python-de] Re: Code vereinfachen

Gerhard Häring gerhard.haering at opus-gmbh.net
Fri Oct 11 09:37:38 EDT 2002


Ron Opitz <ron.opitz=lg8xjlp1sE8 at public.gmane.org> [2002-10-11 08:26 GMT]:
> Am Donnerstag, 10. Oktober 2002 17:42 schrieben Sie:
>> > for i in range(row):
>> >     if row[i] is None:
>> >         row[i] = ""
>> >     else:
>> >         row[i] = row[i].strip()
>> >
>> > oder kürzer:
>> >
>> >     row = [col or "" for col in row]
>> >
>> > das setzt aber voraus, dass du in der Zeile nur None bzw. Strings hast.
>> > Ansonsten wandelt diese List Comprehension auch 0 in einen Leerstring um.
> 
> wenn es nur so einfach wäre ...
> 
> ich habe die Änderungen mal vollzogen, aber range verlangt als Endwert ein
> int. Der Rückgabewert der DB-Zeile (row) ist ein Tuple und da Tuples keine
> Methoden haben geht auch kein count() um die Anzahl der Elemente zu zählen.

Die Länge von Sequenzen ermittelst du mit der Builtin-Funktion len().

> Was nun? Hat einer eine Idee?

Mein "for i in range(row)" war falsch, es müsste stattdessen heißen
"for i in range(len(row))".

Außerdem wird das obere Beispiel nicht funktionieren, da Tupels immutable
(unveränderlich) sind. Du müsstest also zuerst das Tupel in eine Liste
verwandeln mit "row = list(row)". Das untere Beispiel mit der List
Comprehension würde trotzdem funktionieren.
-- 
Gerhard Häring
OPUS GmbH München
Tel.: +49 89 - 889 49 7 - 32
http://www.opus-gmbh.net/






More information about the Python-de mailing list