Ideenlos :D

Du hast eine Idee für ein Projekt?
BlackJack

Beitragvon BlackJack » Dienstag 4. Juli 2006, 08:50

CrackPod hat geschrieben:
BlackJack hat geschrieben:Die ersten vier Zeilen bekommt man auf zwei, wenn man die `pop()` Methode benutzt.

Bei pop wusst ich nich, was ich übergeben soll, damit er den letzten Eintrag nimmt.


Wenn nichts angegeben wird, dann ist der letzte die Voreinstellung. Ansonsten hätte man auch, wie beim Index, eine -1 nehmen können.

Code: Alles auswählen

In [16]: list.pop?
Type:           method_descriptor
Base Class:     <type 'method_descriptor'>
String Form:    <method 'pop' of 'list' objects>
Namespace:      Python builtin
Docstring:
    L.pop([index]) -> item -- remove and return item at index (default last)


In [17]: [1, 2, 3].pop(-1)
Out[17]: 3


Code: Alles auswählen

return ''.join(chr(i // pre_multiplied - add_number) for i in data)
Fehlen da nich die []? Wenn nich warum? Is ja trotzdem ne Iteration, auch wenn sie in ner Funktion aufgerufen wird oder seh ich da was falsch?


Die eckigen Klammern fehlen nicht, da es keine list comprehension sondern eine generator expression ist. Ist im Grunde das gleiche nur das eben keine Liste als Ergebnis rauskommt, sondern ein Iterator. So eine generator expression muss man in runde Klammern setzen, es sei denn sie ist sowie so schon in runde Klammern eingeschlossen, wie z.B. bei einem Funktionsaufruf.

Code: Alles auswählen

In [18]: a = [x**2 for x in (0, 1, 2, 3)]

In [19]: a
Out[19]: [0, 1, 4, 9]

In [20]: b = (x**2 for x in (0, 1, 2, 3))

In [21]: b
Out[21]: <generator object at 0xb7bea0ac>

In [22]: b.next()
Out[22]: 0

In [23]: b.next()
Out[23]: 1

In [24]: b.next()
Out[24]: 4

In [25]: b.next()
Out[25]: 9

In [26]: b.next()
---------------------------------------------------------------------------
exceptions.StopIteration    Traceback (most recent call last)

/home/marc/<ipython console>

StopIteration:


Der Vorteil von genexps ist, das nicht erst eine Liste mit allen Ergebnissen erzeugt wird, sondern das man die einzelnen Ergebnisse dann erzeugen lassen kann, wenn man sie braucht.

extend is die neuere Version von append kann das sein?


Nein, die beiden Methoden machen etwas unterschiedliches. `append()` hängt ein Objekt an eine Liste an und `extend()` nimmt ein iterierbares Objekt entgegen und erweitert die Liste um dessen Inhalt.

Code: Alles auswählen

In [29]: a = [1, 2]

In [30]: a.append([3, 4])

In [31]: a
Out[31]: [1, 2, [3, 4]]

In [32]: b = [1, 2]

In [33]: b.extend([3, 4])

In [34]: b
Out[34]: [1, 2, 3, 4]
Valnar
User
Beiträge: 49
Registriert: Samstag 1. Juli 2006, 12:31
Wohnort: Trier

Beitragvon Valnar » Dienstag 4. Juli 2006, 09:40

Oh man gitb es ein Wörterbuch Deutsch pythonisch - Pythonisch -Deutshc?

Als N00b versteh man manchmal goarneichts! :P
Die Schrebfehler sind absicht und dienen der Belustigung.
CrackPod
User
Beiträge: 205
Registriert: Freitag 30. Juni 2006, 12:56

Beitragvon CrackPod » Dienstag 4. Juli 2006, 12:38

naja, ich verstehs schon, einige Wörter sind neu, werden aber durch die Erklärung klar...

Wo is der Unterschied zu ner Liste und einem Iterator?
Ich mein auf einen String kann man ja auch per s[x] zugreifen. also is das doch auch eine Liste?!
Und noch was: Wie erzeugst du diese Wunderbaren ausgaben? Die taugen mir ziemlich :D Die schreibst du nich selber oder?!
BlackJack

Beitragvon BlackJack » Dienstag 4. Juli 2006, 13:48

@Valnar:

Das meiste wird im Tutorial behandelt. Auf deutsch wird sich einiges im Wiki ([wiki])[/wiki]finden lassen.

@CrackPod:

Bei einer Liste kannst Du auf jedes Element jederzeit zugreifen. Ein Iterator ist ein Objekt mit einer `next()` Methode die immer jeweils das nächste Element zurückgibt.

Wenn ein Objekt den Zugriff auf einzelne Elemente über einen Index in eckigen Klammern unterstützt und mit ``len(obj)`` die Anzahl der enthaltenen Elemente liefert, dann spricht man von einer "Sequenz" oder einem Objekt, das das Sequenzprotokoll versteht. Davon gibt's eine ganze Menge, zum Beispiel Listen, Tupel, Zeichenketten, `array.array` usw. und man kann sich auch eigene Objekte dieser Art erschaffen indem man die Methoden `__len__()`, `__getitem__()` und `__setitem__()` geeignet implementiert. Letzteres nur wenn man mit `obj[x] = y` auch Zuweisungen erlauben möchte.

Ich benutze ipython als interaktive Python-Shell. Da kommen die `In`/`Out` Ausgaben her.
Valnar
User
Beiträge: 49
Registriert: Samstag 1. Juli 2006, 12:31
Wohnort: Trier

Beitragvon Valnar » Mittwoch 5. Juli 2006, 09:43

Ja die meisten aber nicht alle...
Die Schrebfehler sind absicht und dienen der Belustigung.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder