Platzhalter in Listenabfrage

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
tv-verrückter
User
Beiträge: 7
Registriert: Freitag 4. Mai 2012, 23:09

Hallo liebes Python-Forum,

ich möchte aus einer Liste mit dem Aufbau

Code: Alles auswählen

Liste  = [1, 2, 3, 4]
ein bestimmtes, vorher noch nicht bekanntes Listenelement auslesen, also in der Form

Code: Alles auswählen

print Liste[X]
Nur mein Problem ist, wie stelle ich es mit dem Platzhalter am besten an? Mittls String
ging es nicht, mittls %i auch nicht.
Wäre sehr nett, wenn mir jemand einen Tipp geben könnte!

Vielen Dank!

Edit: Die Inhalte der Liste kommen aus einer SQLite Tabelle mittels

Code: Alles auswählen

cursor.execute("SELECT Id FROM sprache WHERE aktiv=1")
Liste = cursor.fetchall()
Benutzeravatar
pixewakb
User
Beiträge: 1412
Registriert: Sonntag 24. April 2011, 19:43

Code: Alles auswählen

liste  = [1, 2, 3, 4]

# Durchlaufen (1)
for i in liste:
    print(i)

# Durchlaufen (2)
for i in range(0, len(liste)):
    print(liste[i])


# Zugriff auf einzelne Elemente
liste[0] # 1
liste[1] # 2
liste[2] # 3
liste[3] # 4
Jedes Listenelement hat einen Index beginnend bei 0. Mit liste[0] greifst du auf das erste Listenelement zu. Du könntest auch mit liste[-1] auf das letzte Listenelement zugreifen. Ich habe oben den Namen deiner Variable von "Liste" nach "liste" geändert. Das ist bei mir eine Geschmacksfrage.

Das Galileo-Buch ist hier sehr verpönt - ich bin auch kein Fan - aber zum schnellen Nachlesen nutze ich es schon mal ganz gern:

http://openbook.galileocomputing.de/pyt ... 7b6222092d

Vielleicht konnte ich dir damit "etwas" helfen.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

@pixewakb: Natürlich ist nicht alles, was im Open Book steht Schrott - aber da man als Anfänger diese Passagen nicht erkennen kann, sollte man es am besten gar nicht nutzen!

In diesem Falle sind das doch absolute Basics, die man so auch im offiziellen Tutorial findet; das gibt es ja bekanntlich sogar auf deutsch: tutorial.pocoo.org. Wozu da also das Galileo Buch verwenden?

@tv-verrückter: Du solltest wirklich mal ein Tutorial durcharbeiten; es ist schon verwunderlich, dass Du irgend etwas mit einer Datenbank anstellst und dennoch *diese* Frage stellst. Vermutlich hast Du Dir momentan nur Code-Beispiele zusammen kopiert, ohne deren Sinn zu verstehen. Damit wirst Du auf Dauer nicht weit kommen ;-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
tv-verrückter
User
Beiträge: 7
Registriert: Freitag 4. Mai 2012, 23:09

Hi, vielen Dank für eure Antworten, pixewakb und Hyperion.
Habs jetzt im Programm so gelöst:

Code: Alles auswählen

cursor.execute("SELECT Id FROM sprache WHERE aktiv=1")
row = cursor.fetchall()
a = self.comboBox.currentIndex()
a = a-1
hol = (row[a])
und damit funktioniert es jetzt super! Vielen Dank!
@Hyperion: Also ich habe bereits in einigen Python Büchern gelesen, aber meist eher die Passagen, die ich da grad brauchte. Aber du hast Recht, ich sollte mal wirklich besser von Anfang bis zum Schluss das Buch durchgehen. Habe übrigens folgendes Python Buch: http://www.amazon.de/Einstieg-Python-Pr ... 027&sr=8-1
Zuletzt geändert von Anonymous am Sonntag 6. Mai 2012, 23:12, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Code-Tags gesetzt.
BlackJack

@tv-verrückter: Du könntest an der Namensgebung noch ein bisschen arbeiten. Namen sollten vermitteln wofür der Wert im Programm steht, der daran gebunden ist. Abkürzungen (?) wie `hol` oder einbuchstabige Namen wie `a` tun das in der Regel nicht. Und `row` ist irreführend, denn `fetchall()` liefert nicht nur eine Zeile, sondern potentiell viele.

Bei dem ``SELECT`` fehlt IMHO noch eine ``ORDER BY``-Klausel, denn sonst ist AFAIK keine Reihenfolge der Ergebnisse garantiert.

`a` ist im Grunde überflüssig, wie auch die Klammern auf der rechten Seite der Zuweisung in der letzten Zeile.

Code: Alles auswählen

cursor.execute('SELECT Id FROM sprache WHERE aktiv=1')
rows = cursor.fetchall()
language_id = rows[self.language_combo_box.currentIndex() - 1]
Wobei ich mal vermute das war nur ein Beispiel, denn wenn ich mit der Vermutung Qt richtig liege, müsste man eigentlich prüfen ob in der ComboBox *nichts* ausgewählt wurde und AFAIK fängt der Index dort auch bei 0 an, wenn etwas ausgewählt wurde.
Antworten