[Python-de] file einlesen

Karl Pfl?sterer khp at pflaesterer.de
Die Apr 11 20:16:12 CEST 2006


On 11 Apr 2006, krebsj at cip.ifi.lmu.de wrote:

> vielen Dank fuer den Tip mit dem slicing.
> Ich habs nun mit 2 for-schleifen und 2 variablen geloest, siehe anhang
> (sicher nicht wunderschoen programmiert)

Jetzt sehe ich auch, was du eigentlich willst. Das geht doch einj wenig
kürzer (und klarer IMO).

f = open(sys.argv[1])
data = [s.strip() for s in f.readlines()]
f.close()

combs1 = [(data[:i][-1], s) for i in xrange(1, len(data)) for s in data[i:]]
combs2 = ((data[:i][-1], s) for i in xrange(1, len(data)) for s in data[i:])
combs3 = lambda lst: ((lst[:i][-1], s) for i in xrange(1, len(lst)) for s in lst[i:])

def combs4 (lst):
    while lst:
        c = lst.pop(0)
        for e in lst: yield c, e


Das sind jetzt 4 Möglichkeiten, die von dir gewünschten Kombinationen zu
erzeugen. combs1 packt alles in eine Liste, combs2 ist ein Generator,
combs3 und combs4 sind zwei Funktionen, die dir einen generator
zurückgeben. Vielleicht ließe sich das ganze mit ein wenig nachdenken
noch optimieren.



   Karl