σμimplied vol · KKmax(S−K,0)udβρᵢⱼfat tailsPnL · drawdownyield · TdSₜ = μSₜ dt + σSₜ dWₜC = S·N(d₁) − K·e⁻ʳᵀ·N(d₂)σₚ² = wᵀΣwd₁ = [ln(S/K) + (r + σ²⁄2)T] ⁄ σ√T∂V/∂t + ½σ²S²·∂²V/∂S² + rS·∂V/∂S − rV = 0Sharpe = (Rₚ − R_f) ⁄ σₚVaR₉₉ = μ − 2.33σρ = Cov(X,Y) ⁄ σₓσᵧE[Rₚ] = Σ wᵢ·E[Rᵢ]φ(x) = e^(−x²/2) ⁄ √2πE[Rᵢ] = R_f + βᵢ(E[Rₘ] − R_f)dXₜ = θ(μ − Xₜ)dt + σ dWₜσ²ₜ = ω + α·ε²ₜ₋₁ + β·σ²ₜ₋₁C − P = S − K·e⁻ʳᵀΔ = ∂V/∂S Γ = ∂²V/∂S²p = (e^(rΔt) − d) ⁄ (u − d)rₜ = ln(Pₜ ⁄ Pₜ₋₁)E[Xₜ₊₁ | ℱₜ] = Xₜf* = (bp − q) ⁄ bz = (x − μ) ⁄ σP(N=k) = λᵏe^(−λ) ⁄ k!Θ = −∂V/∂Tν = S·φ(d₁)·√Tmin wᵀΣw s.t. wᵀμ = μ*∫Σ∂∞λ
σμimplied vol · KKmax(S−K,0)udβρᵢⱼfat tailsPnL · drawdownyield · TdSₜ = μSₜ dt + σSₜ dWₜC = S·N(d₁) − K·e⁻ʳᵀ·N(d₂)σₚ² = wᵀΣwd₁ = [ln(S/K) + (r + σ²⁄2)T] ⁄ σ√T∂V/∂t + ½σ²S²·∂²V/∂S² + rS·∂V/∂S − rV = 0Sharpe = (Rₚ − R_f) ⁄ σₚVaR₉₉ = μ − 2.33σρ = Cov(X,Y) ⁄ σₓσᵧE[Rₚ] = Σ wᵢ·E[Rᵢ]φ(x) = e^(−x²/2) ⁄ √2πE[Rᵢ] = R_f + βᵢ(E[Rₘ] − R_f)dXₜ = θ(μ − Xₜ)dt + σ dWₜσ²ₜ = ω + α·ε²ₜ₋₁ + β·σ²ₜ₋₁C − P = S − K·e⁻ʳᵀΔ = ∂V/∂S Γ = ∂²V/∂S²p = (e^(rΔt) − d) ⁄ (u − d)rₜ = ln(Pₜ ⁄ Pₜ₋₁)E[Xₜ₊₁ | ℱₜ] = Xₜf* = (bp − q) ⁄ bz = (x − μ) ⁄ σP(N=k) = λᵏe^(−λ) ⁄ k!Θ = −∂V/∂Tν = S·φ(d₁)·√Tmin wᵀΣw s.t. wᵀμ = μ*∫Σ∂∞λ
uantCraft AcademySkills
Ctrl K
AO
+1,2 Tsd. Lernende
AnmeldenBeitreten ↗
Skills
AO
+1,2 Tsd. Lernende
Anmelden
  • English
  • Français
  • Español
  • العربية
  • Português
  • Deutsch
  • 日本語
  • 中文
Python-Skill›Modul 1 · Python-Grundlagen für Quants›Thema 1.13·~30 Min.Einsteiger

Tupel und Entpacken

Position in der SkillModul 1 von 11 · Thema 13 von 33
1.13 Tupel und Entpacken
—Lab-Punkte— / 100XP gesamt—Serie—

Eine feste Gruppe von Werten

Ein Tupel ist wie eine Liste, die sich nach dem Erstellen nicht mehr ändern lässt. Man bildet es mit Kommas, meist in Klammern: ("AAPL", 184.25, 184.5). Es passt zu einem kleinen Datensatz, dessen Teile eine feste Bedeutung haben, etwa ein Kurs oder ein Trade. Gelesen wird es per Index wie eine Liste, aber eine Zuweisung an eine Position löst einen TypeError aus. Ein Tupel mit einem Element braucht ein Komma am Ende, (5,), denn (5) ist nur die Zahl 5.

quote = ("AAPL", 184.25, 184.5)

# Reading works like a list
print(quote[0], len(quote))  # AAPL 3

# Changing does not
try:
    quote[1] = 185.0
except TypeError as error:
    print("tuples are fixed:", error)

# One item needs a trailing comma
print(type((5,)), type((5)))  # <class 'tuple'> <class 'int'>

Entpacken: jedem Teil einen Namen geben

Beim Entpacken werden die Teile eines Tupels (oder jeder Sequenz) auf einmal mehreren Namen zugewiesen: symbol, bid, ask = quote. Die Zahl der Namen muss zur Zahl der Elemente passen, sonst löst Python einen ValueError aus. Gegenüber quote[0], quote[1] und quote[2] sagen die Namen, was jeder Teil bedeutet; Entpacken ist daher meist klarer als Indizieren. Es liefert auch den klassischen Tausch ohne Hilfsvariable: a, b = b, a.

# Unpack a quote into named parts
quote = ("AAPL", 184.25, 184.5)
symbol, bid, ask = quote
print(symbol, round(ask - bid, 2))  # AAPL 0.25

# Swap two values without a temporary
bid, ask = ask, bid
print(bid, ask)                     # 184.5 184.25

# The count must match
try:
    symbol, bid = quote
except ValueError as error:
    print("wrong count:", error)

Den Rest mit * nehmen

Setzen Sie ein * vor einen Namen, damit er alles Übrige als Liste aufnimmt: first, *rest = prices oder first, *middle, last = prices. Nur ein Name mit Stern ist erlaubt, und die einfachen Namen brauchen je ein Element. Verwenden Sie _ für einen Teil, den Sie nicht brauchen, etwa first, *_, last = prices.

# * collects what is left, as a list
prices = [184.0, 185.0, 183.2, 186.1]

first, *rest = prices
print(first, rest)         # 184.0 [185.0, 183.2, 186.1]

first, *_, last = prices
print(first, last)         # 184.0 186.1

Entpacken in Schleifen, Rückgaben und Sortierung

Das Entpacken funktioniert überall, wo ein Name zugewiesen wird: in einer for-Schleife (for symbol, price in quotes), in Comprehensions und beim Ergebnis einer Funktion, die mit return a, b mehrere Werte liefert, was in Wirklichkeit ein einziges Tupel ist. Tupel werden auch Element für Element verglichen, erstes gegen erstes und bei Gleichstand zweites gegen zweites; eine Liste von (price, symbol)-Tupeln wird so nach Preis sortiert, Gleichstände entscheidet das Symbol.

# Return several values, unpack them in the caller
def spread_and_mid(bid, ask):
    return ask - bid, (bid + ask) / 2

spread, mid = spread_and_mid(184.25, 184.5)
print(spread, mid)  # 0.25 184.375

# Tuples sort by the first item, then the second
quotes = [("AAPL", 184.5), ("MSFT", 410.2), ("GOOG", 171.0)]
by_price = sorted((price, symbol) for symbol, price in quotes)
print(by_price)     # [(171.0, 'GOOG'), (184.5, 'AAPL'), (410.2, 'MSFT')]

for price, symbol in by_price:
    print(symbol, price)
Ein Tupel für einen Datensatz, eine Liste für eine SammlungVerwenden Sie ein Tupel, wenn die Position jedes Teils eine Bedeutung hat und die Größe fest ist, etwa (symbol, bid, ask). Verwenden Sie eine Liste für viele ähnliche Elemente, von denen Sie welche hinzufügen oder entfernen können. Da ein Tupel sich nicht ändert, geht es auch dort, wo eine Liste nicht geht, etwa als Schlüssel in einem Dictionary, das bald folgt.
  • (a, b, c): eine feste Gruppe; lesen ja, ändern nein.
  • x, y = pair: in Namen entpacken; die Anzahlen müssen passen.
  • first, *rest = items: der Name mit Stern nimmt den Rest als Liste auf.

Als Nächstes: Dictionaries, die Werte über einen Namen statt über eine Position nachschlagen.

Lab: Was bewertet wird

  • Mit quote_stats einen Kurs entpacken25 Pkt.
  • Mit first_last beide Enden nehmen25 Pkt.
  • Mit ranked Kurse nach Preis ordnen25 Pkt.
  • Mit best_ask den günstigsten Handelsplatz finden25 Pkt.
Explorer · lab-13-1
▾ lab-13-1
…
bash · im Browser
learner@quantcraft:~/lab-13-1$
Python noch nicht geladenPythonLn 1, Col 1Spaces: 4UTF-8

Dieses Thema zurücksetzen?

Alles in lab-13-1 wird auf die Startdateien zurückgesetzt und das Terminal geleert. Ihre aktuelle Lösung geht verloren – das lässt sich nicht rückgängig machen.

Wird zurückgesetzt
  • main.py → Startcode
  • Terminal-Verlauf und Testausgabe
  • Nicht eingereichte Änderungen
Bleibt erhalten
  • Beste Lab-Punktzahl
  • Ihre XP und Ihre Serie
  • Vorlesungsfortschritt und Notizen

Melde dich an, um deinen Code auszuführen.

Alle Lektionen kannst du kostenlos lesen. Erstelle ein Konto oder melde dich an, um Code auszuführen, Tests zu starten und dieses Lab abzugeben.

  • IDE im Browser mit Bash-Terminal — nichts zu installieren
  • Sofortige Bewertung, XP und dein Platz auf der Skill
Konto erstellenAnmelden
ODER
Weiter mit GitHub