Ich bin ein Anfänger in Python.Extrahieren bestimmter Elemente aus einer Liste von Zeichenfolgen und Erstellen einer neuen Liste?
Das ist mein Problem. Ich habe eine Liste, wie unten
lst = ['UGAGGUAGUAGGUUGUAUAGUU', 'CUAUGCAAUUUUCUACCUUACC', 'UCCCUGAGACCUCAAGUGUGA',
'ACACCUGGGCUCUCCGGGUACC', 'CAUACUUCCUUACAUGCCCAUA', 'UGGAAUGUAAAGAAGUAUGUA',
'CAUCAAAGCGGUGGUUGAUGUG', 'UAUCACAGCCAGCUUUGAUGUGC', 'AGGCAGUGUGGUUAGCUGGUUG',
'ACGGCUACCUUCACUGCCACCC']
Jetzt muss ich von allen 10 Elementen in der lst
den ersten Buchstaben extrahieren und sie dann in einer neuen Liste. ähnlich der zweite Buchstabe, der dritte Buchstabe usw. bis der letzte Buchstabe aus allen zehn Elementen extrahiert und an die neue Liste angehängt wird. Die Ausgabe wie diese
new_lst = ['UCUACUCUAA', 'GUCCAGAAGC', 'AACAUGUUGG', 'GUCCAACCCG', 'GGUCCAAAAC',
'UCGUUUACGU', 'AAAGUGAAUA', 'GAGGCUGGGC', 'UUAGCACCUC', 'AUCCUAGCGU', ..., 'C']
aussehen muss ich diesen Code versucht:
new_lst = []
new_lst.append(''.join([x[i] for x in lst]))
Die obigen Code druckt nur die ersten 10 Elemente in der neue_liste, da der Index von 0 bis 9 ist (ich was falsch verstanden Index bedeutet).
Dann habe ich die folgende
final= []
for j in range(1,len(lst),1):
new_lst = []
for x in lst:
c = len(x)
for i in range(1,c,1):
while (i<len(x)):
new_lst.append(x[i])
else:
new_lst.append("")
final.append([new_lst])
print final
Wenn ich diesen Code ausführen, wirft es einen Speicherfehler. Der Grund, warum ich die Länge überprüft habe, ist, weil die Elemente in der lst
nicht von der gleichen Länge sind und wenn ich einen anderen Code verwendete, warf es einen Fehler, IndexError: string index out of range
.
Ich wollte zuerst den Code sezieren, so habe ich nur den folgenden Code:
lst2 = []
for x in lst:
c = len (x)
print c
for i in range(0,c,1):
print i,
print x[i],
ich die folgende Ausgabe bekommen:
22
0 U 1 G 2 A 3 G 4 G 5 U 6 A 7 G 8 U 9 A 10 G 11 G 12 U 13 U 14 G 15 U 16 A 17 U 18 A 19 G 20 U 21 U 22
0 C 1 U 2 A 3 U 4 G 5 C 6 A 7 A 8 U 9 U 10 U 11 U 12 C 13 U 14 A 15 C 16 C 17 U 18 U 19 A 20 C 21 C 21
0 U 1 C 2 C 3 C 4 U 5 G 6 A 7 G 8 A 9 C 10 C 11 U 12 C 13 A 14 A 15 G 16 U 17 G 18 U 19 G 20 A 22
0 A 1 C 2 A 3 C 4 C 5 U 6 G 7 G 8 G 9 C 10 U 11 C 12 U 13 C 14 C 15 G 16 G 17 G 18 U 19 A 20 C 21 C 22
0 C 1 A 2 U 3 A 4 C 5 U 6 U 7 C 8 C 9 U 10 U 11 A 12 C 13 A 14 U 15 G 16 C 17 C 18 C 19 A 20 U 21 A 21
0 U 1 G 2 G 3 A 4 A 5 U 6 G 7 U 8 A 9 A 10 A 11 G 12 A 13 A 14 G 15 U 16 A 17 U 18 G 19 U 20 A 22
0 C 1 A 2 U 3 C 4 A 5 A 6 A 7 G 8 C 9 G 10 G 11 U 12 G 13 G 14 U 15 U 16 G 17 A 18 U 19 G 20 U 21 G 23
0 U 1 A 2 U 3 C 4 A 5 C 6 A 7 G 8 C 9 C 10 A 11 G 12 C 13 U 14 U 15 U 16 G 17 A 18 U 19 G 20 U 21 G 22 C 22
0 A 1 G 2 G 3 C 4 A 5 G 6 U 7 G 8 U 9 G 10 G 11 U 12 U 13 A 14 G 15 C 16 U 17 G 18 G 19 U 20 U 21 G 22
0 A 1 C 2 G 3 G 4 C 5 U 6 A 7 C 8 C 9 U 10 U 11 C 12 A 13 C 14 U 15 G 16 C 17 C 18 A 19 C 20 C 21 C
Wie Sie über die Schleife durch das geht sehen erstes Element, aber nach dem Extrahieren des ersten Zeichens aus dem ersten Element in lst
, geht es zum zweiten Zeichen im ersten Element. Aber ich wollte, dass die Schleife durch das zweite Element in der Liste lst
geht. Außerdem gibt es Elemente in der Liste mit ungleichen Längen, also fragen Sie sich, ob es eine Möglichkeit gibt, die IndexError: string index out of range
zu vermeiden?
Ich denke, ich vermisse etwas, es könnte zu dumm sein. Entschuldigung, naiv zu sein. Wenn Sie bitte verschiedene Methoden vorschlagen könnten, um den Job zu erledigen, wäre es großartig. Ich habe online über die Verwendung von Array aus dem Modul numpy überprüft, aber gibt es eine Möglichkeit, dies ohne zu tun?
Darn. Beat mich dazu! –
@ juanpa.arrivillaga Manchmal ist Python so einfach, dass es fast nach Betrügereien aussieht. –
Es ist ein Problem, wenn ich andere Sprachen benutzen muss und mein Verstand geht sofort zu "gut, in Python könnte ich einfach' itertools' und ... "verwenden –