Για βρόχους στο Python

Για δηλώσεις βρόχου

Η Python χρησιμοποιεί ένα βρόχο για να επαναλάβει μια λίστα στοιχείων. Σε αντίθεση με το C ή το Java, που χρησιμοποιούν το for loop για να αλλάξουν μια τιμή σε βήματα και να αποκτήσουν πρόσβαση σε κάτι όπως ένας πίνακας που χρησιμοποιεί αυτήν την τιμή.

Για βρόχους επαναλάβετε τις δομές δεδομένων που βασίζονται στη συλλογή, όπως λίστες, πλειάδες και λεξικά.

Η βασική σύνταξη είναι:

for value in list_of_values: # use value inside this block

Σε γενικές γραμμές, μπορείτε να χρησιμοποιήσετε οτιδήποτε ως τιμή επαναλήψεως, όπου μπορούν να εκχωρηθούν καταχωρίσεις του επαναληπτικού. Π.χ. μπορείτε να αποσυσκευάσετε πλειάδες από μια λίστα πλειάδων:

list_of_tuples = [(1,2), (3,4)] for a, b in list_of_tuples: print("a:", a, "b:", b)

Από την άλλη πλευρά, μπορείτε να βγάλετε οτιδήποτε μπορεί να επαναληφθεί. Μπορείτε να καλέσετε μια συνάρτηση ή να χρησιμοποιήσετε μια λίστα κυριολεκτικά.

for person in load_persons(): print("The name is:", person.name)
for character in ["P", "y", "t", "h", "o", "n"]: print("Give me a '{}'!".format(character))

Μερικοί τρόποι με τους οποίους χρησιμοποιούνται για βρόχους:

Επαναλάβετε τη λειτουργία εύρους ()

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

Αντί να είναι συνάρτηση, το εύρος είναι στην πραγματικότητα ένας αμετάβλητος τύπος ακολουθίας. Η έξοδος θα περιέχει αποτελέσματα από το κατώτερο όριο, δηλαδή 0 έως το ανώτερο όριο, δηλαδή 10, αλλά εξαιρουμένου του 10. Από προεπιλογή, το κατώτερο όριο ή ο αρχικός δείκτης ορίζεται στο μηδέν. Παραγωγή:

> 0 1 2 3 4 5 6 7 8 9 >

Επιπλέον, μπορεί κανείς να καθορίσει το κατώτερο όριο της ακολουθίας και ακόμη και το βήμα της ακολουθίας προσθέτοντας μια δεύτερη και μια τρίτη παράμετρο.

for i in range(4,10,2): #From 4 to 9 using a step of two print(i)

Παραγωγή:

> 4 6 8 >

συνάρτηση xrange ()

Ως επί το πλείστον, το xrange και το εύρος είναι ακριβώς τα ίδια όσον αφορά τη λειτουργικότητα. Και οι δύο παρέχουν έναν τρόπο για να δημιουργήσετε μια λίστα με ακέραιους αριθμούς που μπορείτε να χρησιμοποιήσετε, όσο θέλετε. Η μόνη διαφορά είναι ότι το εύρος επιστρέφει ένα αντικείμενο λίστας Python και το xrange επιστρέφει ένα αντικείμενο xrange. Αυτό σημαίνει ότι το xrange δεν δημιουργεί πραγματικά μια στατική λίστα κατά το χρόνο εκτέλεσης όπως το εύρος. Δημιουργεί τις τιμές όπως τις χρειάζεστε με μια ειδική τεχνική που ονομάζεται απόδοση. Αυτή η τεχνική χρησιμοποιείται με έναν τύπο αντικειμένου γνωστό ως γεννήτριες.

Ένα ακόμη πράγμα που πρέπει να προσθέσετε. Στο Python 3.x, η συνάρτηση xrange δεν υπάρχει πια. Η λειτουργία εύρους κάνει τώρα αυτό που κάνει το xrange στο Python 2.x

Επαναλάβετε τις τιμές σε μια λίστα ή μια πλειάδα

A = ["hello", 1, 65, "thank you", [2, 3]] for value in A: print(value)

Παραγωγή:

> hello 1 65 thank you [2, 3] >

Επαναλάβετε τα πλήκτρα σε ένα λεξικό (γνωστός και ως hashmap)

fruits_to_colors = {"apple": "#ff0000", "lemon": "#ffff00", "orange": "#ffa500"} for key in fruits_to_colors: print(key, fruits_to_colors[key])

Παραγωγή:

> apple #ff0000 lemon #ffff00 orange #ffa500 >

Επαναλάβετε πάνω από δύο λίστες ίδιου μεγέθους σε έναν βρόχο με τη λειτουργία zip ()

A = ["a", "b", "c"] B = ["a", "d", "e"] for a, b in zip(A, B): print a, b, a == b 

Παραγωγή:

> a a True b d False c e False >

Επαναλάβετε μια λίστα και λάβετε το αντίστοιχο ευρετήριο με τη συνάρτηση απαρίθμηση ()

A = ["this", "is", "something", "fun"] for index,word in enumerate(A): print(index, word)

Παραγωγή:

> 0 this 1 is 2 something 3 fun >

Μια συνήθης περίπτωση χρήσης είναι η επανάληψη σε ένα λεξικό

for name, phonenumber in contacts.items(): print(name, "is reachable under", phonenumber)

Εάν πρέπει απολύτως να αποκτήσετε πρόσβαση στον τρέχοντα ευρετήριο της επανάληψής σας, ΜΗΝ χρησιμοποιήσετε range(len(iterable))! Αυτή είναι μια εξαιρετικά κακή πρακτική και θα σας προσφέρει πολλά αστεία από ανώτερους προγραμματιστές της Python. Χρησιμοποιήστε την ενσωματωμένη συνάρτηση enumerate()αντί:

for index, item in enumerate(shopping_basket): print("Item", index, "is a", item)

για / αλλιώς δηλώσεις

Η Pyhton σάς επιτρέπει να χρησιμοποιείτε αλλού με βρόχους, η άλλη περίπτωση εκτελείται όταν δεν ικανοποιήθηκε καμία από τις προϋποθέσεις με το σώμα του βρόχου. Για να χρησιμοποιήσουμε το άλλο, πρέπει να χρησιμοποιήσουμε τη breakδήλωση, ώστε να μπορέσουμε να ξεφύγουμε από τον βρόχο σε μια ικανοποιημένη κατάσταση. Εάν δεν ξεσπάσουμε, τότε το άλλο μέρος θα εκτελεστεί.

week_days = ['Monday','Tuesday','Wednesday','Thursday','Friday'] today = 'Saturday' for day in week_days: if day == today: print('today is a week day') break else: print('today is not a week day')

Στην παραπάνω περίπτωση, η έξοδος θα είναι today is not a week dayδεδομένου ότι το σπάσιμο εντός του βρόχου δεν θα εκτελεστεί ποτέ.

Επαναλάβετε μια λίστα χρησιμοποιώντας τη λειτουργία inline loop

Θα μπορούσαμε επίσης να επαναλάβουμε inline χρησιμοποιώντας το python, για παράδειγμα, εάν χρειαζόμαστε κεφαλαία όλες τις λέξεις σε μια λίστα από μια λίστα, θα μπορούσαμε απλά να κάνουμε τα εξής:

A = ["this", "is", "awesome", "shinning", "star"] UPPERCASE = [word.upper() for word in A] print (UPPERCASE)

Παραγωγή:

> ['THIS', 'IS', 'AWESOME', 'SHINNING', 'STAR'] >

Περισσότερες πληροφορίες:

  • Python2 για τεκμηρίωση βρόχου
  • Python3 για τεκμηρίωση βρόχου