Python range() Συνάρτηση: Float, List, For loop Παραδείγματα

⚡ Έξυπνη Σύνοψη

Python Η range() είναι μια ενσωματωμένη συνάρτηση που δημιουργεί μια αμετάβλητη ακολουθία ακεραίων από μια αρχική τιμή έως, αλλά χωρίς να περιλαμβάνει, μια τιμή τερματισμού, χρησιμοποιώντας ένα προαιρετικό βήμα για τον έλεγχο της αύξησης.

  • 🔘 Σύνταξη: Η συνάρτηση range(start, stop, step) δέχεται έως και τρία ακέραια ορίσματα, όπου η συνάρτηση start έχει προεπιλεγμένη τιμή 0 και η συνάρτηση step έχει προεπιλεγμένη τιμή 1.
  • ☑️ Αποκλειστική στάση: Η ακολουθία σταματά πάντα μία τιμή πριν από τον δείκτη διακοπής, επομένως το range(5) αποδίδει από 0 έως 4.
  • Έλεγχος βημάτων: Ένα θετικό βήμα αυξάνει τις τιμές, ενώ ένα αρνητικό βήμα μετράει αντίστροφα για ένα αντίστροφο εύρος.
  • 🧪 Όρια τύπου: Μόνο ακέραιοι αριθμοί γίνονται δεκτοί, επομένως τα ορίσματα κινητής υποδιαστολής ή συμβολοσειράς δημιουργούν ένα σφάλμα τύπου.
  • NumPy αριθμοί κινητής τηλεφωνίας: Η συνάρτηση NumPy arange() επεκτείνει τη συμπεριφορά της range() σε ακολουθίες κινητής υποδιαστολής.
  • 🤖 Ροές εργασίας τεχνητής νοημοσύνης: Ο κώδικας μηχανικής μάθησης βασίζεται στην range() για την επανάληψη εποχών εκπαίδευσης, μίνι-παρτίδων και πλεγμάτων υπερπαραμέτρων.

Python Λειτουργία range().

Τι είναι Python Σειρά;

Python Το range() είναι μια ενσωματωμένη συνάρτηση που διατίθεται με Python από Python (3.x), και δίνει μια ακολουθία αριθμών με βάση τον δείκτη έναρξης και λήξης που δίνεται. Σε περίπτωση που δεν δοθεί ο δείκτης έναρξης, ο δείκτης θεωρείται ως 0 και θα αυξήσει την τιμή κατά 1 μέχρι τον δείκτη διακοπής.

Για παράδειγμα, η συνάρτηση range(5) θα εμφανίσει τις τιμές 0, 1, 2, 3, 4. Python Η range() είναι μια πολύ χρήσιμη εντολή και χρησιμοποιείται κυρίως όταν πρέπει να επαναλάβετε χρησιμοποιώντας ένα για βρόχο.

Σύνταξη

Η σύνταξη της συνάρτησης range() φαίνεται παρακάτω:

range(start, stop, step)

Παράμετροι

  • αρχή: (προαιρετικό) Ο δείκτης έναρξης είναι ακέραιος και αν δεν δοθεί, η προεπιλεγμένη τιμή είναι 0.
  • να σταματήσει: Ο δείκτης διακοπής καθορίζει την τιμή στην οποία πρέπει να σταματήσει η συνάρτηση εύρους. Είναι μια υποχρεωτική είσοδος στη συνάρτηση εύρους. Η τελευταία τιμή θα είναι πάντα κατά 1 μικρότερη από την τιμή διακοπής.
  • βήμα: (προαιρετικό) Η τιμή βήματος είναι ο αριθμός κατά τον οποίο πρέπει να αυξηθεί ο επόμενος αριθμός στο εύρος. Από προεπιλογή, είναι 1.

Τιμή επιστροφής

Η επιστρεφόμενη τιμή είναι μια ακολουθία αριθμών από το δεδομένο ευρετήριο έναρξης έως διακοπής.

Python range() Λειτουργία και ιστορικό

Python Το range() έχει εισαχθεί από Python έκδοση 3; πριν από αυτήν, η συνάρτηση xrange() ήταν η συνάρτηση.

Τόσο η range() όσο και η xrange() χρησιμοποιούνται για την παραγωγή μιας ακολουθίας αριθμών.

Ακολουθούν οι διαφορές μεταξύ range() και xrange():

εύρος() xrange ()
Το range() δίνει την ακολουθία αριθμών και επιστρέφει μια λίστα αριθμών. Η συνάρτηση xrange() δίνει ένα αντικείμενο γεννήτριας που πρέπει να τοποθετηθεί σε βρόχο for-loop για να ληφθούν οι τιμές.
Το range() επιστρέφει μια λίστα. Η xrange() επιστρέφει ένα αντικείμενο γεννήτριας.
Η μέθοδος range() χρησιμοποιεί περισσότερη μνήμη καθώς η λίστα που επιστρέφεται πρέπει να αποθηκευτεί σε σύγκριση με την xrange(). Καθώς η xrange() επιστρέφει ένα αντικείμενο γεννήτριας, δεν δίνει τιμές αμέσως και πρέπει να χρησιμοποιηθεί μέσα σε έναν βρόχο for για να λάβει τις τιμές.
Η χρήση μνήμης είναι μεγαλύτερη, επομένως η εκτέλεση κώδικα είναι αργή όταν εργάζεστε σε ένα τεράστιο σύνολο δεδομένων. Η εκτέλεση του κώδικα είναι ταχύτερη χρησιμοποιώντας το xrange().

Χρήση εύρους ()

Αυτό το παράδειγμα δείχνει πώς να εκτυπώσετε τις τιμές από 0-9 χρησιμοποιώντας το range().

Η τιμή που χρησιμοποιείται στο εύρος είναι 10, επομένως η έξοδος είναι 0 1 2 3 4 5 6 7 8 9.

Δεδομένου ότι η έναρξη δεν δίνεται, η έναρξη θεωρείται 0 και η τελευταία τιμή δίνεται μέχρι το 9. Η τελευταία τιμή είναι πάντα κατά 1 μικρότερη από τη δεδομένη τιμή, δηλαδή το stop-1.

for i in range(10):
    print(i, end =" ")

Παραγωγή:

0 1 2 3 4 5 6 7 8 9

Χρήση έναρξης και διακοπής στο εύρος ()

Στον κώδικα, η αρχική τιμή είναι 3 και η τιμή τερματισμού είναι 10. Εδώ ο δείκτης έναρξης είναι 3, επομένως η ακολουθία αριθμών θα ξεκινά από το 3 μέχρι την τιμή τερματισμού. Η τελευταία τιμή στην ακολουθία θα είναι κατά 1 μικρότερη από την τιμή τερματισμού, 10-1 = 9.

for i in range(3, 10):
    print(i, end =" ")

Παραγωγή:

3 4 5 6 7 8 9

Χρήση εκκίνησης, διακοπής και βήματος

Η αρχική τιμή είναι 3, επομένως η ακολουθία αριθμών θα ξεκινά από το 3. Η τιμή τερματισμού είναι 10, επομένως η ακολουθία αριθμών θα σταματά στο (10-1), δηλαδή στο 9. Το βήμα είναι 2, επομένως κάθε τιμή στην ακολουθία θα αυξάνεται κατά 2. Εάν η τιμή βήματος δεν δοθεί, η προεπιλεγμένη τιμή για το βήμα είναι 1.

for i in range(3, 10, 2):
    print(i, end =" ")

Παραγωγή:

3 5 7 9

Μέχρι στιγμής, έχουμε δει πώς η συνάρτηση range() δίνει την αυξανόμενη τιμή για την δεδομένη τιμή διακοπής. Ας δοκιμάσουμε τώρα ένα παράδειγμα για να λάβουμε την μειωμένη τιμή στο δεδομένο εύρος.

Αύξηση των τιμών εντός εύρους χρησιμοποιώντας ένα θετικό βήμα

Η παράμετρος step στην range() μπορεί να χρησιμοποιηθεί για την αύξηση ή τη μείωση των τιμών. Από προεπιλογή, είναι μια θετική τιμή, 1. Επομένως, θα δίνει πάντα αυξημένες τιμές.

Η τιμή βήματος πρέπει να είναι θετική σε περίπτωση που θέλετε αυξημένες τιμές ως έξοδο.

for i in range(1, 30, 5):
    print(i, end =" ")

Παραγωγή:

1 6 11 16 21 26

Reverse Εύρος: Μείωση των τιμών χρησιμοποιώντας αρνητικό βήμα

Η παράμετρος step με αρνητική τιμή στην range() μπορεί να χρησιμοποιηθεί για τη λήψη μειωμένων τιμών. Στο παρακάτω παράδειγμα, η τιμή του βήματος είναι αρνητική, επομένως η έξοδος θα μειωθεί από την τιμή εύρους που δόθηκε.

for i in range(15, 5, -1):
    print(i, end =" ")

Παραγωγή:

15 14 13 12 11 10 9 8 7 6

Η αρχική τιμή είναι 15, η τιμή διακοπής είναι 5 και η τιμή βήματος είναι αρνητικός αριθμός, δηλαδή -1. Με τις παραπάνω εισόδους, η συνάρτηση range() θα μειώσει την τιμή από το 15 και μετά μέχρι να φτάσει στην τιμή διακοπής, αλλά εδώ η διαφορά είναι ότι η τελευταία τιμή θα είναι διακοπή + 1.

Χρησιμοποιώντας κυμαινόμενους αριθμούς στο Python εύρος()

Ας δουλέψουμε τώρα στο range() χρησιμοποιώντας αριθμούς κινητής υποδιαστολής.

Παράδειγμα:

for i in range(10.5):
    print(i, end =" ")

Στο παραπάνω παράδειγμα, χρησιμοποιήσαμε την τιμή stop ως 10.5.

Η έξοδος είναι:

Traceback (most recent call last):
  File "python_range.py", line 1, in <module>
    for i in range(10.5):
TypeError: 'float' object cannot be interpreted as an integer

Python δίνει ένα σφάλμα καθώς η συνάρτηση range() δεν υποστηρίζει αριθμούς κινητής υποδιαστολής για έναρξη, διακοπή και βήμα.

Χρήση for-loop με Python εύρος()

Σε αυτό το παράδειγμα, θα χρησιμοποιήσουμε έναν πίνακα αριθμών και θα δούμε πώς να επαναλάβουμε τον πίνακα μέσα σε έναν βρόχο for χρησιμοποιώντας τη συνάρτηση range().

Παράδειγμα:

arr_list = ['Mysql', 'Mongodb', 'PostgreSQL', 'Firebase']

for i in range(len(arr_list)):
    print(arr_list[i], end =" ")

Παραγωγή:

MysqlMongodb PostgreSQL Firebase

Στο παραπάνω παράδειγμα, χρησιμοποιήσαμε την len(arr_list) ως τιμή τερματισμού. Ο βρόχος for θα επαναλαμβάνεται μέχρι την τιμή τερματισμού, δηλαδή το μήκος του πίνακα, το οποίο θα είναι 4, καθώς έχουμε τέσσερα στοιχεία στο arr_list. Η τιμή έναρξης θα είναι 0 και το βήμα θα είναι 1, επομένως οι τιμές θα ξεκινούν από το 0 και θα τελειώνουν στο 3, δηλαδή μήκος πίνακα -1, που σημαίνει 4 -1 = 3.

Χρησιμοποιώντας Python range() ως λίστα

Σε αυτό το παράδειγμα θα δείτε πώς μπορείτε να χρησιμοποιήσετε την έξοδο από την περιοχή ως λίστα.

Παράδειγμα:

print(list(range(10)))

Παραγωγή:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Μπορείτε να δείτε ότι η έξοδος είναι μια μορφή λίστας. Δεν ήταν απαραίτητο να κάνουμε βρόχο το range() και χρησιμοποιώντας τη μέθοδο list() μπορούσαμε να μετατρέψουμε απευθείας την έξοδο από το range σε list format.

Χρήση χαρακτήρων στο εύρος python()

Μέχρι στιγμής, έχουμε χρησιμοποιήσει ακέραιους αριθμούς στο python range(). Είδαμε επίσης ότι οι αριθμοί κινητής υποδιαστολής δεν υποστηρίζονται στην περιοχή python. Ας προσπαθήσουμε να δούμε την έξοδο ως προς το τι συμβαίνει όταν χρησιμοποιούμε χαρακτήρες.

Παράδειγμα:

for c in range ('z'):
        print(c, end =" ")

Παραγωγή:

Traceback (most recent call last):
  File "python_range.py", line 1, in <module>
    for c in range ('z'):
TypeError: 'str' object cannot be interpreted as an integer

Εμφανίζει ένα σφάλμα λέγοντας ότι μια συμβολοσειρά δεν μπορεί να ερμηνευτεί ως ακέραιος.

Για να λάβετε τη λίστα με τα αλφάβητα, μπορείτε να προσαρμόσετε τον κώδικα και να λάβετε τις επιθυμητές εξόδους που φαίνονται παρακάτω:

Παράδειγμα:

def get_alphabets(startletter, stopletter, step):
    for c in range(ord(startletter.lower()), ord(stopletter.lower()), step):
        yield chr(c)

print(list(get_alphabets("a", "h", 1)))

Παραγωγή:

['a', 'b', 'c', 'd', 'e', 'f', 'g']

Πώς να αποκτήσετε πρόσβαση σε στοιχεία εύρους

Μπορείτε να χρησιμοποιήσετε έναν βρόχο for για να λάβετε τις τιμές από το εύρος ή να χρησιμοποιήσετε το ευρετήριο για να αποκτήσετε πρόσβαση στα στοιχεία από το range().

Χρήση for-loop

Παράδειγμα:

for i in range(6):
    print(i)

Παραγωγή:

0
1
2
3
4
5

Χρήση ευρετηρίου

Ο δείκτης χρησιμοποιείται με εύρος για να ληφθεί η διαθέσιμη τιμή σε αυτήν τη θέση. Εάν η τιμή εύρους είναι 5, για να λάβετε την τιμή έναρξης, μπορείτε να χρησιμοποιήσετε το range(5)[0] και το επόμενο εύρος τιμών(5)[1] και ούτω καθεξής.

Παράδειγμα:

startvalue = range(5)[0] 
print("The first element in range is = ", startvalue) 

secondvalue = range(5)[1] 
print("The second element in range is = ", secondvalue) 

lastvalue = range(5)[-1]
print("The first element in range is = ", lastvalue)

Παραγωγή:

The first element in range is =  0
The second element in range is =  1
The first element in range is =  4

Χρήση λίστας()

Αυτή η μέθοδος θα εκτυπώσει όλα τα στοιχεία από το range(). Χρησιμοποιώντας τη λίστα() θα επιστρέψει τα στοιχεία από το range() σε μορφή λίστας.

Παράδειγμα:

print(list(range(10)))

Παραγωγή:

 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Δίνει την έξοδο της λίστας για το εύρος που δίνεται.

Παράδειγμα: Λάβετε ζυγούς αριθμούς χρησιμοποιώντας το range()

Χρησιμοποιώντας την range() θα ληφθεί η λίστα των άρτιων αριθμών στο εύρος που δίνεται ως είσοδος. Οι παράμετροι για την range() είναι: start is 2, stop is 20, και step is 2, επομένως οι τιμές θα αυξηθούν κατά 2 και θα δώσουν άρτιους αριθμούς μέχρι το stop-2.

Παράδειγμα:

for i in range(2, 20, 2):
    print(i, end =" ")

Παραγωγή:

2 4 6 8 10 12 14 16 18

Συγχώνευση εξόδων δύο εύρους ().

Σε αυτό το παράδειγμα, θα συνενώσουμε 2 συναρτήσεις range() με τη βοήθεια της συνάρτησης chain() της ενότητας itertools.

Παράδειγμα:

from itertools import chain

print("Merging two range into one")
frange =chain(range(10), range(10, 20, 1))
for i in frange:
    print(i, end=" ")

Παραγωγή:

Merging two range into one
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Χρήση range() με NumPy

Η ενότητα NumPy έχει μια συνάρτηση arange() που λειτουργεί και δίνει παρόμοια έξοδο με την range(). Η arange() λαμβάνει τις ίδιες παραμέτρους με την range().

Σύνταξη:

arange(start, stop, step)

Για να εργαστείτε με το NumPy, ακολουθήστε τα παρακάτω βήματα.

Βήμα 1: Εισαγωγή μονάδας NumPy

import numpy

Σε περίπτωση που, κατά την εκτέλεση, εμφανιστεί ένα σφάλμα που αναφέρει ότι η μονάδα numpy δεν βρέθηκε, πρέπει να εγκαταστήσετε τη μονάδα όπως φαίνεται στο βήμα 2.

Βήμα 2: Εγκατάσταση NumPy

pip install numpy

Βήμα 3: Παράδειγμα εργασίας του arange() χρησιμοποιώντας το NumPy

import numpy as np

for  i in np.arange(10):
   print(i, end =" ")  

Παραγωγή:

0 1 2 3 4 5 6 7 8 9

Αριθμοί κινητής υποδιαστολής χρησιμοποιώντας το NumPy arange()

Δεν είναι δυνατό να λάβουμε την ακολουθία κινητής υποδιαστολής χρησιμοποιώντας τη συνάρτηση range(), αλλά είναι δυνατό χρησιμοποιώντας τη συνάρτηση NumPy arange().

Παράδειγμα:

Το εύρος που θέλουμε είναι από 0.5 έως 1.5. Η τιμή θα αυξηθεί κατά 0.2.

import numpy as np

for  i in np.arange(0.5, 1.5, 0.2):
   print(i, end =" ")  

Παραγωγή:

0.5 0.7 0.8999999999999999 1.0999999999999999 1.2999999999999998

Το αποτέλεσμα που λαμβάνουμε είναι λίγο περίεργο. Μερικοί από τους αριθμούς κινητής υποδιαστολής εμφανίζονται με 16 δεκαδικά ψηφία. Αυτό συμβαίνει λόγω της πολυπλοκότητας της αποθήκευσης δεκαδικών αριθμών κινητής υποδιαστολής σε δυαδική μορφή. Μπορείτε επίσης να στρογγυλοποιήσετε τις τιμές, εάν χρειάζεται, και να τις περιορίσετε στα δεκαδικά ψηφία που χρειάζεστε.

Συχνές Ερωτήσεις

In Python 3, η συνάρτηση range() επιστρέφει ένα νωχελικό, αμετάβλητο αντικείμενο εύρους, όχι μια λίστα. Παράγει αριθμούς κατόπιν αιτήματος. Τυλίξτε την σε list(range(n)) όταν απαιτείται μια πραγματική λίστα. Python 2 επέστρεψε μια πλήρη λίστα.

Η τιμή διακοπής είναι αποκλειστική, έτσι ώστε το range(len(items)) να αντιστοιχίζεται καθαρά σε δείκτες που βασίζονται στο μηδέν. Για να συμπεριλάβετε το τελικό σημείο, προσθέστε ένα στο διακοπή, για παράδειγμα range(1, 11) για να μετρήσετε από το 1 έως το 10.

Όχι. Η κλήση της συνάρτησης range(0, 10, 0) προκαλεί ValueError: το range() arg 3 δεν πρέπει να είναι μηδέν, επειδή ένα βήμα μηδέν δεν θα μπορούσε ποτέ να φτάσει την τιμή τερματισμού και θα επαναλαμβανόταν για πάντα. Χρησιμοποιήστε ένα θετικό ή αρνητικό βήμα αντ' αυτού.

Η range() απορρίπτει τους floats, αλλά η κατανόηση λίστας μπορεί να κλιμακώσει τους ακέραιους αριθμούς: [x * 0.5 για x στο range(0, 6)] παράγει 0.0 έως 2.5. Αυτό αποφεύγει την εισαγωγή του NumPy ενώ εξακολουθεί να γίνεται βήμαping μέσω δεκαδικών τιμών.

Ναι. Ένα αντικείμενο range αποθηκεύει μόνο τις τιμές έναρξης, λήξης και βήματος, επομένως η συνάρτηση range(1000000) χρησιμοποιεί την ίδια μικρή, σταθερή ποσότητα μνήμης με την συνάρτηση range(10). Οι τιμές υπολογίζονται μία κάθε φορά κατά την επανάληψη.

Χρησιμοποιήστε τον τελεστή in: 5. Η in range(0, 10) επιστρέφει True. Για αντικείμενα εύρους, Python εκτελεί αυτόν τον έλεγχο συμμετοχής με γρήγορη αριθμητική σε σταθερό χρόνο αντί να σαρώνει κάθε στοιχείο, επομένως παραμένει αποτελεσματικός σε μεγάλα εύρη.

Ο κώδικας μηχανικής μάθησης χρησιμοποιεί την range() για να επαναλαμβάνει εποχές εκπαίδευσης, να επαναλαμβάνει μίνι-παρτίδες και να δημιουργεί πλέγματα υπερπαραμέτρων. Οι NumPy arange() και linspace() επεκτείνουν αυτό σε εύρη κινητής υποδιαστολής για χρονοδιαγράμματα ρυθμού μάθησης και σαρώσεις κατωφλίου που είναι κοινές σε πειράματα τεχνητής νοημοσύνης.

Ναι. Οι βοηθοί κωδικοποίησης τεχνητής νοημοσύνης, όπως οι βρόχοι αυτόματης συμπλήρωσης GitHub Copilot που βασίζονται σε range() από ένα σχόλιο ή όνομα συνάρτησης, και τα εργαλεία agentic μπορούν να αναδιαμορφώσουν τους βρόχους ευρετηρίου σε καθαρότερα μοτίβα enumerate() ή κατανόησης, αν και τα δημιουργημένα όρια χρειάζονται ακόμη μια γρήγορη αναθεώρηση.

Συνοψίστε αυτήν την ανάρτηση με: