Hallo allerseits,
ich sitze mittlerweile seit 2 tagen frustriert an einem kleinen Problem, und zwar einen String wie z.B. "AGTCCCGGTAAAGCGTAGTGCAGACGATT"
in eine Liste zu überführen die dann so aussieht :
['AGT', 'CCC', 'GGT', 'AAA', 'GCG', ...usw.
ich habs meistens mit einer normalen for schleife versucht:
for j in range(0, (len(pureseq)/3), 3):
b =list(pureseq).insert(j, "**")
print b
aber jedesmal wirft er mir mehrere Zeilen "None" aus?! Weiss da jemand Bescheid was ich da falsch mache? Wie könnte man es denn lösen? pureseq soll hier mein String sein.
Gruss[/list]
String in Blöcke teilen und in eine Liste einfügen
Achja, natürlich erstelle ich durch die 3 Zeilen noch nicht die fertige Liste aber wenn ich das hinbekomme, würde ich es einfach durch den .split("**") Befehl machen
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo skanami!skanami hat geschrieben:einen String wie z.B. "AGTCCCGGTAAAGCGTAGTGCAGACGATT"
in eine Liste zu überführen die dann so aussieht :
['AGT', 'CCC', 'GGT', 'AAA', 'GCG', ...usw.
Hier die Variante mit einer einfachen For-Schleife:
Code: Alles auswählen
>>> s = "AGTCCCGGTAAAGCGTAGTGCAGACGATT"
>>> my_list = []
>>> for i in xrange(0, len(s), 3):
... my_list.append(s[i:i+3])
...
>>> my_list
['AGT', 'CCC', 'GGT', 'AAA', 'GCG', 'TAG', 'TGC', 'AGA', 'CGA', 'TT']
>>>
Und hier noch eine Variante:
Code: Alles auswählen
my_list = [ s[i:i+3] for i in xrange(0, len(s), 3) ]
Code: Alles auswählen
>>> for item in ( s[i:i+3] for i in xrange(0, len(s), 3) ):
... print item
...
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Jau, besten Dank, klappt.
Noch ne kurze Frage. Gib es bei listen auch eine Funktion wo man einen Item direkt austauschen kann ? wie beim String das replace ? hab im Tutorial von Rossum nichts dazu finden können.
Noch ne kurze Frage. Gib es bei listen auch eine Funktion wo man einen Item direkt austauschen kann ? wie beim String das replace ? hab im Tutorial von Rossum nichts dazu finden können.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo skanami!skanami hat geschrieben:Gib es bei listen auch eine Funktion wo man einen Item direkt austauschen kann? wie beim String das replace?
Kommt darauf an, ob du so wie hier nach allen Vorkommen eines Eintrags suchen willst und diesen ersetzen möchtest...
Code: Alles auswählen
>>> my_list = ["a", "b", "b"]
>>> for index, item in enumerate(my_list):
... if item == "b":
... my_list[index] = "bb"
...
>>> my_list
['a', 'bb', 'bb']
>>>
Code: Alles auswählen
my_list[2] = "bb"
Code: Alles auswählen
my_list[my_list.index("b")] = "bb"
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Das "Schonen des Speichers" erreicht man auch, indem man bei der vorigen Variante die äußeren, eckigen Klammern durch runde Klammern ersetzt, wodurch man die List Comprehension zu einer Generator Expression macht.gerold hat geschrieben:Und hier noch eine Variante:Und hier noch die speicherschonende Variante, die keine neue Liste erzeugt:Code: Alles auswählen
my_list = [ s[i:i+3] for i in xrange(0, len(s), 3) ]
Code: Alles auswählen
>>> for item in ( s[i:i+3] for i in xrange(0, len(s), 3) ): ... print item ...