Συζητήσεις για το μάθημα και ανακοινώσεις

Range με μεγάλο μήκος

 
Picture of GEORGIOS GIATILIS
Range με μεγάλο μήκος
by GEORGIOS GIATILIS - Thursday, 19 October 2017, 9:05 PM
 

Γιατί ο υπολογιστής είναι τόσο γρήγορος σε περίπτωση που ελέγχουμε το εξής;

if 121212121212121212121 in range(100000000000000000000000000000000000000000000000000):

 print("True")

Γιατί το True εμφανίζεται μέσα σε δευτερόλεπτα στην οθόνη;Δεν φτάνει μέχρι τον αριθμό 121212....21 για να ελέγξει αν είναι μέσα στο range που έβαλα;

Όμοια και σε αυτήν την περίπτωση:

if 10000000000000000000000000000000000000000 in range(12121212121212121):

 print("True")

else:

print("False")

βγάζει False εντός δευτερολέπτων.

Picture of Μιχάλης Κολουντζάκης
Re: Range με μεγάλο μήκος
by Μιχάλης Κολουντζάκης - Thursday, 19 October 2017, 9:46 PM
 

Πολύ καλή παρατήρηση και ερώτηση!

Γιατί δε δημιουργεί μια λίστα για το range, αλλά το αναπαριστά εσωτερικά ως όλους τους ακέραιους από ένα αριθμό a έως ένα αριθμό (ακέραιο) b. Έτσι όταν του ζητάς να ελέγξει αν κάτι είναι μέσα δεν πάει να συγκρίνει με όλα τα στοιχεία της λίστας (την οποία ουδέποτε την κατασκευάζει εσωτερικά) αλλά ελέγχει απλά δύο ανισότητες, αν κάτι είναι >= a και <= b.