| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY präsentiert die neue NVIDIA RTX A400 und die A1000 Grafikkarte, eine Pressemitteilung
|
Autor
|
Thema: Länge einer Liste (1444 mal gelesen)
|
Theodor Schoenwald Ehrenmitglied
Beiträge: 1672 Registriert: 16.04.2002
|
erstellt am: 24. Feb. 2011 22:03 <-- editieren / zitieren --> Unities abgeben:
|
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9803 Registriert: 01.12.2003 One AutoCAD 2.5 - 2024, AutoCAD, Civil 3D, Win10/Win11
|
erstellt am: 25. Feb. 2011 00:34 <-- editieren / zitieren --> Unities abgeben: Nur für Theodor Schoenwald
|
archtools Mitglied
Beiträge: 965 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 25. Feb. 2011 00:50 <-- editieren / zitieren --> Unities abgeben: Nur für Theodor Schoenwald
Zitat: Original erstellt von CAD-Huebner: Minimal 0 maximal so viele wie in den Speicher passen Mehr als 1Mio hatte ich auf jeden Fall schon in einer Liste.
Probier mal (progn (setq test (sequence 1 10000000)) (prin1)) Das baut Dir eine Liste aus 10 Millionen Elementen und sollte vielleicht 10 Sekunden dauern. Aber versuche nicht, Dir die Liste auf dem Bildschirm ausgeben zu lassen, wenn Du heute noch was auf dem Rechner machen willst :-) Diese Commonlisp-Funktion ist sehr hilfreich für die Konstruktion von FOREACH Schleifen, in denen man einen Zähler durchlaufen lassen muss. Beispielsweise um jedes Element eines Auswahlsatzes sset anzusprechen: (foreach n (sequence 0 (1- (sslength sset))) (setq en (ssname sset n)) ... ) Code:
(defun sequence (start end / tempend result) (if (AND (numberp start) (numberp end) ) (progn (cond ((< start end) (setq tempend start result (list start) ) (while (<= 1 (- end tempend)) (setq tempend (1+ tempend)) (setq result (cons tempend result)) ) ) ;; ((< end start) (setq tempend end end start start tempend result (list start) ) (while (<= 1 (- end tempend)) (setq tempend (1+ tempend)) (setq result (cons tempend result)) ) (setq result (reverse result)) ) ;; ((= end start) (setq result (list start)) ) ;; ) ) (progn (alert "error in SEQUENCE:\n\nSTART and END must be numbers!" ) ) ) (reverse result) )
[Diese Nachricht wurde von archtools am 25. Feb. 2011 editiert.]
[Diese Nachricht wurde von archtools am 25. Feb. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Theodor Schoenwald Ehrenmitglied
Beiträge: 1672 Registriert: 16.04.2002
|
erstellt am: 25. Feb. 2011 12:10 <-- editieren / zitieren --> Unities abgeben:
Hallo, mich wundert es, dass es so viele sind, ich hatte etwas in Erinnerung von einigen Tausend. Umso besser. Mein nächster Schritt wäre gewesen, ein Tool zu machen um die Grenze zu testen. Das bekam ich jetzt mit der @archtools-Antwort serviert. Danke, viele Grüße Theodor Schönwald Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |