Matroids Matheplanet Forum Index
Moderiert von matph
Informatik » Programmieren » Python: Kürzere Schreibweise für Definition gleicher Variablen
Druckversion
Druckversion
Antworten
Antworten
Autor
Schule Python: Kürzere Schreibweise für Definition gleicher Variablen
Bekell
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 05.09.2008
Mitteilungen: 2454
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Themenstart: 2021-06-18


Hallo,

gibt es für sowas nicht eine andere, kürzere Schreibweise?
Python
  1. y1=[]
  2. y2=[]
  3. y3=[]
  4. y4=[]
  5. y5=[]
  6. y6=[]
  7. y7=[]
  8. y8=[]
  9. y9=[]
  10. y10=[]
  11. y11=[]
  12. y12=[]

Danke



-----------------
Das Schwierige ist nicht die Mathematik. Schwierig ist es zu formulieren, daß man selber versteht, was man sieht und die anderen auch!



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 2447
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.1, eingetragen 2021-06-18


Du solltest in einem solchen Fall nicht 12 Variablen, sondern so etwas wie eine Liste mit zwölf Einträgen verwenden.



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Bekell
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 05.09.2008
Mitteilungen: 2454
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.2, vom Themenstarter, eingetragen 2021-06-18


Kannst Du mal eine Beispiel bitte machen, damit ich sehe, wie du das meinst?


-----------------
Das Schwierige ist nicht die Mathematik. Schwierig ist es zu formulieren, daß man selber versteht, was man sieht und die anderen auch!



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
DerEinfaeltige
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 11.02.2015
Mitteilungen: 2934
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.3, eingetragen 2021-06-18


Man nutzt nicht zwölf verschiedene Variablen für Objekte gleichen Typs, sondern speichert die Objekte (hier also die Listen) in einer Liste, einem Dict, einem namedTuple etc.

Also statt:
"Ich habe ein Matheheft und ich habe ein Deutschheft und ich habe ein Englischheft und ich habe ..."

besser
"Ich habe einen Schulranzen mit diversen Schulheften."


-----------------
Why waste time learning when ignorance is instantaneous?
- Bill Watterson -



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
schlauuu
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 28.04.2021
Mitteilungen: 29
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.4, eingetragen 2021-06-18


wie wäre es mit
y =[[]]
dann ist dein y1 äquivalent mit y[1]
Wenn deine Indizes aussagekräftige Namen haben sollten, würde ich eine Hashmap verwenden. Bei größeren Arrays die Bibliothek pandas beides ist lerneswert.



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Bekell
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 05.09.2008
Mitteilungen: 2454
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.5, vom Themenstarter, eingetragen 2021-06-18


2021-06-18 15:41 - schlauuu in Beitrag No. 4 schreibt:
wie wäre es mit
y =[[]]
dann ist dein y1 äquivalent mit y[1]
Wenn deine Indizes aussagekräftige Namen haben sollten, würde ich eine Hashmap verwenden. Bei größeren Arrays die Bibliothek pandas beides ist lerneswert.

Hashmap - wat ist dat? Kannst Du dat mal mit Beispiel bringen...?


-----------------
Das Schwierige ist nicht die Mathematik. Schwierig ist es zu formulieren, daß man selber versteht, was man sieht und die anderen auch!



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
schlauuu
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 28.04.2021
Mitteilungen: 29
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.6, eingetragen 2021-06-18


Google das falls es dich interessiert die machen ein besseren Job es zu erklären.
Ganz vereinfacht kannst du mit einem eindeutigen Schlüssel auf Werte zugreifen eben wie in einem Array.
In Python heißt es dictionary, bsp:

dic = dict({"1": "Alice", "2": "Bob"})
dic["hi"]="bye" # neue Werte werden zugewiesen als würde der Schlüssel bereits existieren
print(dic)
######du könntest ein dict zb. so initialisieren
list1 = ['hi','byebyex2']
list2 = ['good','bad']
for l1,l2 in list1,list2:
    dic[l1] = l2 #hi wird überschrieben
print(dic)

Der Vorteil ist das man aufeinen Blick sieht was in dem jeweiligen Schlüssel gespeichert wird, falls später etwas geändert wird weiß man so genau nach welchem wert man suchen sollten anstatt nach einer zahl im Code zu suchen. Das ist vielleicht auch interessant
www.geeksforgeeks.org/python-initializing-dictionary-with-empty-lists/



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
dingovine
Neu Letzter Besuch: in der letzten Woche
Dabei seit: 05.06.2021
Mitteilungen: 4
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.7, eingetragen 2021-06-18


2021-06-18 16:36 - schlauuu in Beitrag No. 6 schreibt:
list1 = ['hi','byebyex2']
list2 = ['good','bad']
for l1,l2 in list1,list2:
    dic[l1] = l2 #hi wird überschrieben
print(dic)

Elegante Alternative:

dict = {l1: l2 for l1, l2 in zip(list1, list2)}

Um auch die ursprüngliche Frage zu beantworten:

y = [[] for i in range(17)]

Die Zauberwörter hier sind dictionary comprehension und list comprehension (zur Vollständigkeit möchte ich erwähnen, dass es auch set comprehension gibt).

Edit: Sorry, hatte die verlinkte Seite nicht gelesen. Das geht natürlich in die gleiche Richtung.



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Bekell
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 05.09.2008
Mitteilungen: 2454
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.8, vom Themenstarter, eingetragen 2021-06-18


Danke, an alle, das recht erst mal, muss das erst verdauen ....


-----------------
Das Schwierige ist nicht die Mathematik. Schwierig ist es zu formulieren, daß man selber versteht, was man sieht und die anderen auch!



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Bekell
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 05.09.2008
Mitteilungen: 2454
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.9, vom Themenstarter, eingetragen 2021-06-26


2021-06-18 14:47 - DerEinfaeltige in Beitrag No. 3 schreibt:
Man nutzt nicht zwölf verschiedene Variablen für Objekte gleichen Typs, sondern speichert die Objekte (hier also die Listen) in einer Liste, einem Dict, einem namedTuple etc.

Also statt:
"Ich habe ein Matheheft und ich habe ein Deutschheft und ich habe ein Englischheft und ich habe ..."

besser
"Ich habe einen Schulranzen mit diversen Schulheften."

Kannst Du nicht bitte mal ein Beispiel herstellen?


-----------------
Das Schwierige ist nicht die Mathematik. Schwierig ist es zu formulieren, daß man selber versteht, was man sieht und die anderen auch!



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
DerEinfaeltige
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 11.02.2015
Mitteilungen: 2934
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.10, eingetragen 2021-06-26


Für was denn genau?

In dem Thread steht wirklich alles doppelt und dreifach.

Aber gut ...
Python
  1. # Dictionary (Rucksack) für diverse Objekte
  2. Ranzen = {}
  3.  
  4. # Bekell liebt ungerade Primzahlen. Also packt er eine Liste voller
  5. # ungerader Primzahlen in seinen Schulranzen
  6. Ranzen["Primzahlen"] = [3,5,7,11,13,17]
  7.  
  8. # Bekell liebt außerdem Potenzen ungerader Zahlen, also packt er ein
  9. # paar Listen mit Potenzen in einen Ordner
  10. # und den Ordner in den Schulranzen
  11. Ordner = {n: [n**k for k in range(1,5)] for n in (3,5,7,9)}
  12. Ranzen["Ordner"] = Ordner
  13.  
  14. # DerEinfaeltige möchte ihm einen subtilen Hinweis geben.
  15. # Also packt er eine TODO-Liste in Bekells Schulranzen
  16. Ranzen["TODO"] = "Lerne doch ein wenig zu programmieren "\
  17. "statt immer die gleichen Fragen zu stellen!".split()
  18.  
  19. print(Ranzen["Primzahlen"])
  20.  
  21. print(Ranzen["Ordner"][3])
  22. print(Ranzen["Ordner"][5])
  23. print(Ranzen["Ordner"][7])
  24. print(Ranzen["Ordner"][9])
  25.  
  26. print(Ranzen["TODO"])



-----------------
Why waste time learning when ignorance is instantaneous?
- Bill Watterson -



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Bekell
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 05.09.2008
Mitteilungen: 2454
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.11, vom Themenstarter, eingetragen 2021-06-26


Das ist lieb von Dir, Einfältiger.... Grosses Lob für Geduld und Nachsicht ....
DAS IST DER ENTSCHEIDENDE BEFEHL:
Python
  1. Ordner = {n: [n**k for k in range(1,5)] for n in (3,5,7,9)}

den ich nicht zu 100 % verstehe. Und zwar versteh ich das "n:" am Anfang nach der Schweifklammerparenthese nicht.
Ordner hat auch Schweifklammerparenthesen, ergo ist es ein Dic? Oder was? Dann mysste n: der Key sein, oder? ... und Value der lange Ausdruck. Oder ist das eine Lampda Funktion? Also, einfach ist das nicht ...
Ich glaube, es ist ein verschachteltes Dic?? Ein Nachteil gibt es, ich weiss nicht, wie die Listen mit den Potenzen drin eigentlich heissen....



-----------------
Das Schwierige ist nicht die Mathematik. Schwierig ist es zu formulieren, daß man selber versteht, was man sieht und die anderen auch!



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
DerEinfaeltige
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 11.02.2015
Mitteilungen: 2934
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.12, eingetragen 2021-06-26


Wenn man so einen Ausdruck nicht versteht, nimmt man Papier und Stift und geht das Schritt für Schritt durch.


Ordner ist offenbar ein Dict.

Die Key/Value-Paare werden anscheinend per List-Comprehension erzeugt.

Die Schlüssel n werden dabei dem Tupel (3,5,7,9) entnommen.


Also fangen wir mit dem Schlüssel 3 an:

Der Wert ist anscheinend eine Liste, die via List-Comprehension erstellt wird.
Mit n=3 steht da also
Python
[3**k for k in range(1,5)]

Die innere Laufvariable k läuft also von 1 bis 4 und die Liste enthält dann die entsprechenden Potenzen von 3.

Wir haben also das Paar
3 -> [3, 9, 27, 81]


Dann geht es in der äußeren Schleife weiter und am Ende enthält das Dictionary Ordner vier Key/Value-Paare.

3 -> [3, 9, 27, 81]    
5 -> [5, 25, 125, 625]
7 -> [7, 49, 343, 2401]
9 -> [9, 81, 729, 6561]


-----------------
Why waste time learning when ignorance is instantaneous?
- Bill Watterson -



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Bekell hat die Antworten auf ihre/seine Frage gesehen.
Bekell wird per Mail über neue Antworten informiert.
Neues Thema [Neues Thema] Antworten [Antworten]    Druckversion [Druckversion]

 


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]