Seite 2 von 2

Verfasst: Mittwoch 14. Oktober 2009, 12:26
von mit
Sorry, habe nun konkrete Fragen:

Code: Alles auswählen

#1.
##my ($x1, @model1) = split /\s+/, "AXDA     .255 .245 .245 .255";   
x1, model1 = "AXDA     .255 .245 .245 .255".split()

#2.
##my @lod = map(lg($model1[$_]/$model2[$_]), (0..3));
lod = map(lambda x: [lg($model1[x]/$model2[x] ], range(0,4))

#3
#my $a = "aagcaaatccgcgataaaattgccttggggcgtataaaagg";
#$a =~ tr/acgtACGT/01230123/; 
a = "aagcaaatccgcgataaaattgccttggggcgtataaaagg";
a.translate(string.maketrans('acgtACGT', '01230123')
         
#4.
#my $score = sum(map($lod[$_], split //,$a));
zu 1: Leider erkennt Python nicht, dass model1 ein Array sein soll. Gibt es in Python dafür eine andere schreibweise?

zu 2: Hier bin ich nicht sicher ob es so funktionieren kann, da 1 nicht funktioniert.

zu 3: Das müsste funktionieren.

zu 4: Hier weiss ich nicht wie man es umschreibt.

Verfasst: Mittwoch 14. Oktober 2009, 12:37
von Leonidas
mit hat geschrieben:zu 1: Leider erkennt Python nicht, dass model1 ein Array sein soll. Gibt es in Python dafür eine andere schreibweise?
Ab Python 3 geht:

Code: Alles auswählen

a, *b = range(3)
mit hat geschrieben:zu 2: Hier bin ich nicht sicher ob es so funktionieren kann, da 1 nicht funktioniert.
Ne, kanns nicht weil Python keine Skalar-Dollarzeichen benutzt. Das solltest du inzwischen wissen.

Verfasst: Mittwoch 14. Oktober 2009, 15:54
von Defnull
Zu 1:
x1, model1 = "AXDA .255 .245 .245 .255".split(' ')
model1 = model1.split()

Zu 2: Du solltest für eine bessere Lesbarkeit eine for-schleife nehmen. Map+lambda funktioniert, ist aber eher unleserlich. Und schmeiss die Dollar-Zeichen weg :)

Zu 4: Was tut es denn? Ich kann kein Perl.

Verfasst: Mittwoch 14. Oktober 2009, 18:45
von problembär
mit hat geschrieben:Wie lernt man am besten Reguläre Ausdrücke gibt es ein gutes Buch oder Howtos?
2 Seiten: 1, 2.

Gruß

Verfasst: Mittwoch 14. Oktober 2009, 19:03
von cofi
http://www.regular-expressions.info/

Dort gibt es auch Buecherempfehlungen.

Verfasst: Donnerstag 15. Oktober 2009, 06:28
von mit
Danke, aber leider funktioniert der Code immer noch nicht.

Ich habe hier ( http://www.python-forum.de/viewtopic.ph ... 717#149717 ) ein neues Thema gestartet, da es wirklich nicht mehr hier hinein gehört.

Verfasst: Donnerstag 15. Oktober 2009, 11:55
von Ronnie
mit hat geschrieben: Leider weiss ich nicht wie diesen Perl Code:

Code: Alles auswählen

$com = 'ADFdiKL'
$com =~ tr/ADFadf/XYZxyz/;
Wie würde dies in Python aussehen?
Zur Not baust du dir eben eine eigene tr-Funktion:

Code: Alles auswählen

>>> def translator(source, destination):
	lookup = dict(zip(source, destination))
	return lambda i: ''.join([lookup[c] for c in i])

>>> tr = translator("ADFadf","XYZxyz")
>>> tr('afdFAD')
'xzyZXY'
Allerdings ist es immer empfehlenswert auf erprobte eingebaute Wege zurückzugreifen.

Verfasst: Donnerstag 15. Oktober 2009, 12:23
von EyDu

Verfasst: Donnerstag 15. Oktober 2009, 12:30
von Ronnie
Danke. Die Möglichkeit wurde ja auch schon weiter oben aufgezeigt und es ist immer sinnvoll erprobte eingebaute Funktionen/Methoden zu nutzen. Eigentlich wollte ich nur zeigen, dass es nicht schwer ist die gewünschte Funktion nachzubauen. :oops: