Matroids Matheplanet Forum Index
Moderiert von matph
Informatik » Programmieren » Python - Viele Strings mit Index definieren
Autor
Schule Python - Viele Strings mit Index definieren
Stefan7
Neu Letzter Besuch: im letzten Quartal
Dabei seit: 06.09.2021
Mitteilungen: 3
  Themenstart: 2021-09-06

Hallo, ich möchte in Python viele Strings definieren, wobei eine einzelne Definition jedes Strings umfangsmäßig nicht möglich ist (es muss aber in String Form sein). Deswegen habe ich an dem Definieren von Strings in einer for-Schleife gedacht, wo man in jedem String ein Index hat, also ungefähr wie folgt: for i in range(0, 100): W(i)="" Dies funktioniert aber so nicht. Meine Frage nun: Gibt es eine Schreibweise wie man so in einer for-Schleife Strings mit Index definieren kann? Oder kann man es vielleicht anders machen? Ich wäre sehr dankbar, wenn mir jemand weiterhelfen kann. 🙂 Viele Grüße, Stefan


   Profil
Nuramon
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 23.01.2008
Mitteilungen: 3016
  Beitrag No.1, eingetragen 2021-09-06

Hallo, Du könntest W als eine Liste oder ein dict von Strings definieren (was sinnvoller ist hängt vom konkreten Anwendungsfall ab, meistens dürfte aber list die bessere Wahl sein): \sourceon Python W1 = [] for i in range(10): W1.append("") print(W1) # ['', '', '', '', '', '', '', '', '', ''] W2 = dict() for i in range(10): W2[i] = "" print(W2) #{0: '', 1: '', 2: '', 3: '', 4: '', 5: '', 6: '', 7: '', 8: '', 9: ''} \sourceoff Mit beiden Varianten kannst Du auf die einzelnen Strings jeweils mit W1[i] bzw. W2[i] für i=0,1,...,9 zugreifen.


   Profil
DerEinfaeltige
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 11.02.2015
Mitteilungen: 2983
  Beitrag No.2, eingetragen 2021-09-06

Kurzschreibweise selbigen Codes: \sourceon Python WList = ["" for i in range(10)] WDict = {i: "" for i in range(10)} >>> WList ['', '', '', '', '', '', '', '', '', ''] >>> WDict {0: '', 1: '', 2: '', 3: '', 4: '', 5: '', 6: '', 7: '', 8: '', 9: ''} \sourceoff


   Profil
Stefan7
Neu Letzter Besuch: im letzten Quartal
Dabei seit: 06.09.2021
Mitteilungen: 3
  Beitrag No.3, vom Themenstarter, eingetragen 2021-09-06

Danke für die Antworten! \quoteon(2021-09-06 17:57 - Nuramon in Beitrag No. 1) Mit beiden Varianten kannst Du auf die einzelnen Strings jeweils mit W1[i] bzw. W2[i] für i=0,1,...,9 zugreifen. \quoteoff Das mit der Liste habe ich schon im Schritt davor angewendet, weswegen man das glaube ich nicht nochmal machen kann, aber erstmal mehr zum Kontext: Ich habe ein Dokument zeilenweise einglesen, wobei ich jede Zeile als ein Eintrag einer Liste abgespeichert habe. Jede Zeile besteht aber aus drei Zeichen, die ich gerne auslesen würde. Meine Idee war also jeden Listeneintrag als ein String W(i) abzuspeichern um dann mit W(i)[0], W(i)[1] und W(i)[2] an die erste, zweite bzw. dritte Zeichen zu kommen. Ich greife also einmal auf die Einträge einer Liste zu und möchte darin nochmal auf einzelne Zeichen dieser Einträge zugreifen. Der Index i bei W(i)[0] ist mein hauptsächliches Problem, da ich noch nichts von einen solchen Index bei einem String gefunden habe. Die Frage wäre also wie man so etwas umsetzen kann. Oder geht es auch anders?


   Profil
haegar90
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 18.03.2019
Mitteilungen: 750
Wohnort: Gog
  Beitrag No.4, eingetragen 2021-09-06

\sourceon Python lst = ['abc', '123', '+-='] for m in range(0, len(lst)): for n in range(0, len(lst[m]): print(lst[m][n]) \sourceoff Ungeprüft am Smartphone getippt, sollte aber so prinzipiell laufen.


   Profil
Stefan7
Neu Letzter Besuch: im letzten Quartal
Dabei seit: 06.09.2021
Mitteilungen: 3
  Beitrag No.5, vom Themenstarter, eingetragen 2021-09-06

In der dritten Zeile fehlt eine Klammer zu. Es funktioniert aber wirklich wunderbar, vielen Dank. 🙂


   Profil
Folgende Antworten hat der Fragesteller vermutlich noch nicht gesehen.
Er/sie war noch nicht wieder auf dem Matheplaneten
__blackjack__
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 23.09.2021
Mitteilungen: 27
  Beitrag No.6, eingetragen 2021-09-24 03:14

Für die ”Kurzschreibweisen” um eine Liste mit vielen leeren Zeichenketten oder einem Wörterbuch mit ganzen Zahlen die auf leere Zeichenketten abgebildet werden, gäbe es noch: \sourceon python a_list = [""] * 100 a_dict = dict.fromkeys(range(100), "") \sourceoff Beides sollte man nur mit unveränderlichen Objekten machen, denn man hat da am Ende 100 mal das *selbe* Objekt und nicht 100 unterschiedliche. ``for i in range(len(sequence)):`` nur um `i` dann als Index in `sequence` zu verwenden ist in Python ein „anti pattern“. Man kann direkt über die Elemente von Sequenztypen iterieren, ohne den Umweg über einen Laufindex: \sourceon python texts = ["abc", "123", "+-="] for text in texts: for character in text: print(character) \sourceoff


   Profil
Stefan7 wird per Mail über neue Antworten informiert.

Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2021 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]