Generieren aller Sublisten der Länge N einer Liste

Code-Stücke können hier veröffentlicht werden.
Antworten
Benutzeravatar
pillmuncher
User
Beiträge: 1484
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

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.
In specifications, Murphy's Law supersedes Ohm's.
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Warum erinnert mich das Ganze denn schon wieder an Prolog :P
(Nein, ich will die Lösung nicht sehen^^)
Benutzeravatar
pillmuncher
User
Beiträge: 1484
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

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.
In specifications, Murphy's Law supersedes Ohm's.
Antworten