Matroids Matheplanet Forum Index
Moderiert von matph
Informatik » Programmieren » Python: Listen vergleichen
Autor
Schule Python: Listen vergleichen
Bekell
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 05.09.2008
Mitteilungen: 2605
  Themenstart: 2021-10-21

Hallo, habe zwei Listen L1=[1,2,3,4,5,6,7,8,3,4,5] L2=[8,3,4] Ich möchte jetzt kucken, ob die Liste2 so, wie sie da steht, in der Liste 1 enthalten ist. Es geht also nicht darum, ob die Zahlen von Liste 2 in Liste 1 enthalten sind, sondern ob Zahlen und Abfolge dort anzutreffen ist. Erbitte einen Tip! Zippi, nicht böse sein, ich mach das andre weiter, muss nur erst für 2-3 Tage was anderes beenden. Danke für die Geduld! Frage2: Wie kann man das "IndexError: list index out of range" abfangen, also, wenn basis kein [-2] hat? if basis[-1]==quadrat[-1] and basis[-2]==quadrat[-2]: Ergebnis: IndexError: list index out of range


   Profil
DerEinfaeltige
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 11.02.2015
Mitteilungen: 3036
  Beitrag No.1, eingetragen 2021-10-21

Das ist keine eindeutige Problemstellung. Es fehlt die Information, ob die Elemente DIREKT aufeinander folgen müssen. Beispiel: Enthält in deinem Sinne L1=[1,2,3] die Liste L2=[1,3] (das wäre analog zum Subsequence Problem) oder müsste L1 bspw. [2,1,3] sein?


   Profil
Bekell
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 05.09.2008
Mitteilungen: 2605
  Beitrag No.2, vom Themenstarter, eingetragen 2021-10-21

\quoteon(2021-10-21 19:00 - DerEinfaeltige in Beitrag No. 1) Das ist keine eindeutige Problemstellung. Es fehlt die Information, ob die Elemente DIREKT aufeinander folgen müssen. Beispiel: Enthält in deinem Sinne L1=[1,2,3] die Liste L2=[1,3] (das wäre analog zum Subsequence Problem) oder müsste L1 bspw. [2,1,3] sein? \quoteoff Ja, Einfältiger, Tausend Dank für Deine Präzision, die Elemente müssen direkt aufeinander folgen ...


   Profil
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 2922
  Beitrag No.3, eingetragen 2021-10-21

Wenn es darum geht, ob eine Liste [a, b, c] exakt so in einer anderen vorkommt (also in [1, a, b, c, 2], aber weder in [a, b] noch in [a, 1, b, 2, c]): \sourceon python def contains(longlist, sublist): return any(longlist[beg:beg+len(sublist)] == sublist for beg in range(0, len(longlist) - len(sublist) + 1)) \sourceoff [Die Antwort wurde nach Beitrag No.1 begonnen.]


   Profil
Bekell
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 05.09.2008
Mitteilungen: 2605
  Beitrag No.4, vom Themenstarter, eingetragen 2021-10-21

Danke Zippy, 1 1 1 1 1 [1] [1] True 2 5 25 2 1 [5] [2, 5] True 3 6 36 2 1 [6] [3, 6] True 4 10 100 3 2 [1, 0] [1, 0, 0] True 5 25 625 3 2 [2, 5] [6, 2, 5] True 6 50 2500 4 2 [5, 0] [2, 5, 0, 0] True 7 60 3600 4 2 [6, 0] [3, 6, 0, 0] True 8 76 5776 4 2 [7, 6] [5, 7, 7, 6] True 9 100 10000 5 3 [1, 0, 0] [1, 0, 0, 0, 0] True 10 250 62500 5 3 [2, 5, 0] [6, 2, 5, 0, 0] True 11 376 141376 6 3 [3, 7, 6] [1, 4, 1, 3, 7, 6] True 12 500 250000 6 3 [5, 0, 0] [2, 5, 0, 0, 0, 0] True 13 600 360000 6 3 [6, 0, 0] [3, 6, 0, 0, 0, 0] True 14 625 390625 6 3 [6, 2, 5] [3, 9, 0, 6, 2, 5] True 15 760 577600 6 3 [7, 6, 0] [5, 7, 7, 6, 0, 0] True 16 1000 1000000 7 3 [1, 0, 0, 0] [1, 0, 0, 0, 0, 0, 0] True 17 2500 6250000 7 4 [2, 5, 0, 0] [6, 2, 5, 0, 0, 0, 0] True 18 3760 14137600 8 4 [3, 7, 6, 0] [1, 4, 1, 3, 7, 6, 0, 0] True 19 3792 14379264 8 4 [3, 7, 9, 2] [1, 4, 3, 7, 9, 2, 6, 4] True 20 5000 25000000 8 4 [5, 0, 0, 0] [2, 5, 0, 0, 0, 0, 0, 0] True 21 6000 36000000 8 4 [6, 0, 0, 0] [3, 6, 0, 0, 0, 0, 0, 0] True 22 6250 39062500 8 4 [6, 2, 5, 0] [3, 9, 0, 6, 2, 5, 0, 0] True 23 7600 57760000 8 4 [7, 6, 0, 0] [5, 7, 7, 6, 0, 0, 0, 0] True 24 9376 87909376 8 4 [9, 3, 7, 6] [8, 7, 9, 0, 9, 3, 7, 6] True noch eine Unpräzisität von mir: Ich wollte von hinten vergleichen, weil ich nicht die Quadrate suche, die irgendwo ihre Wurzel in sich enthalten, sondern nur die, die sie am Ende enthalten. Damit fallen alle Zahlen weg, die am Ende ne 0 haben.... aber Nr 19 ist auch nicht schlecht.... ich mach noch n'en Sieb wegen der Nullen


   Profil
Bekell
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 05.09.2008
Mitteilungen: 2605
  Beitrag No.5, vom Themenstarter, eingetragen 2021-10-21

Ketschup ist rot Ketschup ist blau 1 1 1 1 1 [1] [1] True 2 5 25 2 1 [5] [2, 5] True 3 6 36 2 1 [6] [3, 6] True 4 25 625 3 2 [2, 5] [6, 2, 5] True 5 76 5776 4 2 [7, 6] [5, 7, 7, 6] True 6 376 141376 6 3 [3, 7, 6] [1, 4, 1, 3, 7, 6] True 7 625 390625 6 3 [6, 2, 5] [3, 9, 0, 6, 2, 5] True 8 3792 14379264 8 4 [3, 7, 9, 2] [1, 4, 3, 7, 9, 2, 6, 4] True 9 9376 87909376 8 4 [9, 3, 7, 6] [8, 7, 9, 0, 9, 3, 7, 6] True 10 14651 214651801 9 5 [1, 4, 6, 5, 1] [2, 1, 4, 6, 5, 1, 8, 0, 1] True 11 90625 8212890625 10 5 [9, 0, 6, 2, 5] [8, 2, 1, 2, 8, 9, 0, 6, 2, 5] True 12 109376 11963109376 11 6 [1, 0, 9, 3, 7, 6] [1, 1, 9, 6, 3, 1, 0, 9, 3, 7, 6] True 13 495475 245495475625 12 6 [4, 9, 5, 4, 7, 5] [2, 4, 5, 4, 9, 5, 4, 7, 5, 6, 2, 5] True 14 505025 255050250625 12 6 [5, 0, 5, 0, 2, 5] [2, 5, 5, 0, 5, 0, 2, 5, 0, 6, 2, 5] True 15 890625 793212890625 12 6 [8, 9, 0, 6, 2, 5] [7, 9, 3, 2, 1, 2, 8, 9, 0, 6, 2, 5] True 16 971582 943971582724 12 6 [9, 7, 1, 5, 8, 2] [9, 4, 3, 9, 7, 1, 5, 8, 2, 7, 2, 4] True 17 1713526 2936171352676 13 7 [1, 7, 1, 3, 5, 2, 6] [2, 9, 3, 6, 1, 7, 1, 3, 5, 2, 6, 7, 6] True 18 2890625 8355712890625 13 7 [2, 8, 9, 0, 6, 2, 5] [8, 3, 5, 5, 7, 1, 2, 8, 9, 0, 6, 2, 5] True 19 4115964 16941159649296 14 7 [4, 1, 1, 5, 9, 6, 4] [1, 6, 9, 4, 1, 1, 5, 9, 6, 4, 9, 2, 9, 6] True 20 5133355 26351333556025 14 7 [5, 1, 3, 3, 3, 5, 5] [2, 6, 3, 5, 1, 3, 3, 3, 5, 5, 6, 0, 2, 5] True 21 6933808 48077693380864 14 7 [6, 9, 3, 3, 8, 0, 8] [4, 8, 0, 7, 7, 6, 9, 3, 3, 8, 0, 8, 6, 4] True 22 7109376 50543227109376 14 7 [7, 1, 0, 9, 3, 7, 6] [5, 0, 5, 4, 3, 2, 2, 7, 1, 0, 9, 3, 7, 6] True wie ist die Folge: 6,7,3,9, sie wächst kontinuierlich aber sehr langsam Was mich interessiert: Sicherlich ist sie unendlich, dann müsste sie sich aber wiederholen....also, die Folge 9376 müsste immer wieder vorkommen. Das wird dann die unendliche Widerholung einer Subfolge in der Folge.... seltsam. Wie nennt man eine solche Zahl? Der vordere ZiffernTeil der final autocontainen Quadrate scheint beliebig zu sein... auf jeden Fall scheinen autocontaine Quadrate selten zu sein und ihre Dichte dünnt rasant. 1. 6 -6 2. 76 - 70 3. 376 - 300 4. 9376 - 9000 5. 109376 - 10000 6. 7109376 - 700000 Wie lautet die Nächste? Ist die Folge unendlich? Interessant, wie schnell Python ist! Bis 10 Mio ^2 in kaum 20 sec.... und er probiert alle durch, nicht nur die hinten auf 5 und 6... \sourceon Python \numberson from colorama import Fore, Back, Style import math print(f'Ketschup ist {Fore.RED}rot{Style.RESET_ALL}') print(f'Ketschup ist {Back.BLUE}blau{Style.RESET_ALL}') nr=0 def contains(longlist, sublist): return any(longlist[beg:beg+len(sublist)] == sublist for beg in range(0, len(longlist) - len(sublist) + 1)) """def vergleicher(basis,quadrat): ergebnis=[] längendifferenz=len(quadrat)-len(basis) if basis[-1]==quadrat[-1] and basis[-2]==quadrat[-2]: ergebnis=basis return ergebnis """ def Ziffern(zahl,basis): resultat=[] while zahl: zahl, ziffer = divmod( zahl, basis ) resultat.insert( 0, ziffer ) return resultat basis=[] quadrat=[] for x in range (1,10000000): basis=Ziffern(x,10) quadrat=Ziffern(x*x,10) if contains(quadrat,basis)==True and quadrat[-1]!=0: nr+=1 print(nr, x, x*x,len(str(x*x)),int(math.log(x,10))+1,basis, quadrat,contains(quadrat,basis)) \sourceoff


   Profil
DerEinfaeltige
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 11.02.2015
Mitteilungen: 3036
  Beitrag No.6, eingetragen 2021-10-22

Es ist (wie immer) schwer nachzuvollziehen, was du tust. Es wäre auch sinnvoll gewesen, zippy und andere Leser darauf hinzuweisen, dass du dich einfach nur die Substring-Eigenschaft von Dezimalzahlen interessierst. Dann wird das Programm nämlich wesentlich einfacher: \sourceon Python \numberson Befehl: for n in range(10**8): if n%10==0: continue if str(n) in str(n**2): print(f"{n:8d} {n**2:16d}") Ausgabe: 1 1 5 25 6 36 25 625 76 5776 376 141376 625 390625 3792 14379264 9376 87909376 14651 214651801 90625 8212890625 109376 11963109376 495475 245495475625 505025 255050250625 890625 793212890625 971582 943971582724 1713526 2936171352676 2890625 8355712890625 4115964 16941159649296 5133355 26351333556025 6933808 48077693380864 7109376 50543227109376 10050125 101005012515625 12890625 166168212890625 48588526 2360844858852676 50050025 2505005002500625 66952741 4482669527413081 87109376 7588043387109376 88027284 7748802728416656 88819024 7888819024312576 \sourceoff


   Profil
DerEinfaeltige
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 11.02.2015
Mitteilungen: 3036
  Beitrag No.7, eingetragen 2021-10-22

Die Endziffernfolgen sind ziemlich sicher unendlich. Hier mal die jeweils ersten 21 Glieder. Länge 1 => Lösungen [5, 6] Länge 2 => Lösungen [25, 76] Länge 3 => Lösungen [625, 376] Länge 4 => Lösungen [625, 9376] Länge 5 => Lösungen [90625, 9376] Länge 6 => Lösungen [890625, 109376] Länge 7 => Lösungen [2890625, 7109376] Länge 8 => Lösungen [12890625, 87109376] Länge 9 => Lösungen [212890625, 787109376] Länge 10 => Lösungen [8212890625, 1787109376] Länge 11 => Lösungen [18212890625, 81787109376] Länge 12 => Lösungen [918212890625, 81787109376] Länge 13 => Lösungen [9918212890625, 81787109376] Länge 14 => Lösungen [59918212890625, 40081787109376] Länge 15 => Lösungen [259918212890625, 740081787109376] Länge 16 => Lösungen [6259918212890625, 3740081787109376] Länge 17 => Lösungen [56259918212890625, 43740081787109376] Länge 18 => Lösungen [256259918212890625, 743740081787109376] Länge 19 => Lösungen [2256259918212890625, 7743740081787109376] Länge 20 => Lösungen [92256259918212890625, 7743740081787109376] Länge 21 => Lösungen [392256259918212890625, 607743740081787109376] Ab einigen Tausend Ziffern wird es natürlich ein wenig langsamer.


   Profil
Bekell
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 05.09.2008
Mitteilungen: 2605
  Beitrag No.8, vom Themenstarter, eingetragen 2021-10-22

Danke, Einfältiger Es sind letzlich zwei radixkontente QZsorten, die eine auf 25 hinten, die andere auf 76 hinten. Es wäre noch zu klären, ob bei der auf 76 hinten auch die 2 und 5 irgendwann kommen (vermutlich nicht) und bei der auf 25 hinten die 7 und die 4.... (leider, leider, leider momentan keine Zeit, muss mein Geschäft besorgen)


   Profil
DerEinfaeltige
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 11.02.2015
Mitteilungen: 3036
  Beitrag No.9, eingetragen 2021-10-22

Beide Folgen enthalten bereits ab dem 30. Glied alle dezimalen Ziffern. 30 4106619977392256259918212890625 30 5893380022607743740081787109376


   Profil
Bekell
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 05.09.2008
Mitteilungen: 2605
  Beitrag No.10, vom Themenstarter, eingetragen 2021-10-22

\quoteon(2021-10-22 11:39 - DerEinfaeltige in Beitrag No. 9) Beide Folgen enthalten bereits ab dem 30. Glied alle dezimalen Ziffern. 30 4106619977392256259918212890625 30 5893380022607743740081787109376 \quoteoff Es sind übrigens Komplementär gebaut, die beiden Zahlen. 1. wo bei der einen eine Doppelte, da bei der anderen auch. 2. wenn man die übereinanderstehenden Ziffern addiert, kommt immer 9 ausser bei der letzten Ziffer....


   Profil
DerEinfaeltige
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 11.02.2015
Mitteilungen: 3036
  Beitrag No.11, eingetragen 2021-10-22

Man kann die Rechenvorschrift für die Folgen leicht herleiten. Endziffer 5: - Quadriere die letzte bekannte Lösung. - Nimm die nächste Stelle 5^2 = 25 => 2 25^2 = 625 => 6 625^2 = 390625 => 90 90625^2 = 8212890625 => 8 890625^2 ... Endziffer 6: - Quadriere die letzte bekannte Lösung - Nimm 10 minus die nächste Stelle 6^2 = 36 => 10 - 3 = 7 76^2 = 5776 => 10 - 7 = 3 376^2 = 141376 => 10 - 1 = 9 9376^2 = 87909376 => 10 - 0 = 10 109376^2 ... [Die Antwort wurde nach Beitrag No.9 begonnen.]


   Profil
DerEinfaeltige
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 11.02.2015
Mitteilungen: 3036
  Beitrag No.12, eingetragen 2021-10-22

Hier ein Beispiel für eine allgemeine Lösung: \sourceon Python \numberson def base_b_string(N,base): ziffern="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" string = [] while N: ziffer = N % base string.append(ziffern[ziffer]) N //= base return "".join(string[::-1]) def idem_potent_ciphers(base): return [cipher for cipher in range(2,base) if cipher**2%base==cipher] def inverse(cipher,base): for inv in range(base): if (inv*cipher)%base == 1: return inv def sequence(cipher,base,length=10): S = [cipher] factor = base - inverse(2*cipher-1,base) for n in range(1,length+1): number = S[-1] next_cipher = pow(number,2,base**(n+1))//base**n next_cipher *= factor next_cipher %= base number += next_cipher*base**n S.append(number) print(base_b_string(number,base)) return S for base in [6,10,12,30]: for cipher in idem_potent_ciphers(base): print(f"Base={base} and Cipher={cipher}:") sequence(cipher,base) print() Ausgabe: Base=6 and Cipher=3: 13 213 213 50213 350213 1350213 21350213 221350213 2221350213 52221350213 Base=6 and Cipher=4: 44 344 5344 5344 205344 4205344 34205344 334205344 3334205344 3334205344 Base=10 and Cipher=5: 25 625 625 90625 890625 2890625 12890625 212890625 8212890625 18212890625 Base=10 and Cipher=6: 76 376 9376 9376 109376 7109376 87109376 787109376 1787109376 81787109376 Base=12 and Cipher=4: 54 854 3854 B3854 1B3854 61B3854 B61B3854 1B61B3854 21B61B3854 B21B61B3854 Base=12 and Cipher=9: 69 369 8369 8369 A08369 5A08369 5A08369 A05A08369 9A05A08369 9A05A08369 Base=30 and Cipher=6: J6 2J6 B2J6 LB2J6 6LB2J6 Q6LB2J6 BQ6LB2J6 LBQ6LB2J6 8LBQ6LB2J6 C8LBQ6LB2J6 Base=30 and Cipher=10: 3A 13A H13A OH13A 7OH13A 7OH13A 307OH13A 2307OH13A O2307OH13A RO2307OH13A Base=30 and Cipher=15: 7F Q7F 1Q7F E1Q7F FE1Q7F 3FE1Q7F F3FE1Q7F 6F3FE1Q7F R6F3FE1Q7F JR6F3FE1Q7F Base=30 and Cipher=16: MG 3MG S3MG FS3MG EFS3MG QEFS3MG EQEFS3MG NEQEFS3MG 2NEQEFS3MG A2NEQEFS3MG Base=30 and Cipher=21: QL SQL CSQL 5CSQL M5CSQL TM5CSQL QTM5CSQL RQTM5CSQL 5RQTM5CSQL 25RQTM5CSQL Base=30 and Cipher=25: AP RAP IRAP 8IRAP N8IRAP 3N8IRAP I3N8IRAP 8I3N8IRAP L8I3N8IRAP HL8I3N8IRAP \sourceoff


   Profil
Bekell
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 05.09.2008
Mitteilungen: 2605
  Beitrag No.13, vom Themenstarter, eingetragen 2021-10-24

Ich schliesse daraus, diese Folgen sind eine Eigenschaft des Notationssystems, nicht der absoluten Zahlen... stimmt das?


   Profil
DerEinfaeltige
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 11.02.2015
Mitteilungen: 3036
  Beitrag No.14, eingetragen 2021-10-24

Die Notation hat damit nichts zu tun und da wir von natürlichen Zahlen sprechen verstehe ich auch den Hinweis auf deren Absolutwert nicht. Falls du das "Stellenwertsystem" meinst: Eigenschaften von Endziffern in einem Stellenwertsystem hängen offensichtlich von der Wahl dieses Stellenwertsystems ab.


   Profil
Bekell hat die Antworten auf ihre/seine Frage gesehen.
Bekell 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]