Seite 1 von 1

Generieren aller Sublisten der Länge N einer Liste

Verfasst: Dienstag 10. November 2009, 01:20
von pillmuncher
Ich hab's subseqs genannt, weil mir der Name besser gefällt als sublists.

Code: Alles auswählen

def subseqs(seq, length):
    for i in xrange(len(seq) - length + 1):
        yield seq[i:i+length]
So kann man's verwenden:

Code: Alles auswählen

>>> for each in subseqs("hello", 3):
...     print each
...
hel
ell
llo
>>> for i in xrange(len("hello")):
...     for each in subseqs("hello", i + 1):
...         print each
...
h
e
l
l
o
he
el
ll
lo
hel
ell
llo
hell
ello
hello
Nix großartiges, aber vielleicht kann's ja wer brauchen.

Gruß,
Mick.

Verfasst: Dienstag 10. November 2009, 11:54
von ms4py
Warum erinnert mich das Ganze denn schon wieder an Prolog :P
(Nein, ich will die Lösung nicht sehen^^)

Verfasst: Dienstag 10. November 2009, 13:10
von pillmuncher
ice2k3 hat geschrieben:Warum erinnert mich das Ganze denn schon wieder an Prolog :P
Weil man all-solutions-Prädikate für die in Prolog allgegenwärtigen generate-and-test Algorithmen braucht?

Code: Alles auswählen

>>> for i in xrange(len("hello")):
...     for each in filter(lambda x:x.startswith('h'), subseqs("hello", i + 1)):
...         print each
...
h
he
hel
hell
hello
Gruß,
Mick.