Για βρόχο στην Python

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

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

Η ακόλουθη δομή είναι

h2=[ 'Valencia', 'Castellón', 'Alicante']

for j in h2:
   instructions

Εδώ το h2 είναι ένα επαναλαμβανόμενο στοιχείο για παράδειγμα μια λίστα h2=[ 'Valencia', 'Castellón', 'Alicante']. Ο βρόχος θα έχει 3 επαναλήψεις, στην πρώτη j=Valencia στη δεύτερη τη μεταβλητή j=Castellón.

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

Επαναλάβετε τον βρόχο για τον ακριβή αριθμό των φορών.

Αν θέλουμε να επαναληφθεί ορισμένες φορές όπως μπορούμε να κάνουμε στη C++, θα πρέπει να χρησιμοποιήσουμε το range(). Για να επαναλάβουμε 10 φορές θα χρησιμοποιούσαμε a

for element in Range(9):
    instructions

Βάζουμε 9 και όχι 10 γιατί το εύρος ξεκινά από το 0, άρα από το 0 έως το 9 υπάρχουν 10 επαναλήψεις ή στροφές του βρόχου.

Το Knowing Range() μας επιτρέπει, αντί να βάλουμε έναν αριθμό μέσα, να βάλουμε μια μεταβλητή, με την οποία θα έχουμε πολύ περισσότερο έλεγχο.

var = 10
for element in Range(var):
    instructions

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

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

Δηλώσεις Διακοπής και Συνέχειας

Υπάρχουν 2 πολύ χρήσιμες λειτουργίες που μας επιτρέπουν να κάνουμε έναν βρόχο for πολύ λειτουργικό, fon the break και the continue. Συνήθως χρησιμοποιούνται με όρους, εάν, ελέγχοντας αν κάτι είναι αλήθεια.

Λειτουργούν σε άλλους βρόχους και υπάρχει μια άλλη ενδιαφέρουσα δήλωση που είναι pass, η οποία είναι μια εντολή που εκτελείται αλλά δεν κάνει τίποτα και είναι ιδανική για όταν θέλουμε να ορίσουμε μια δομή που απαιτεί εντολές αλλά θέλουμε να τις βάλουμε αργότερα (σχόλια είναι δεν είναι χρήσιμο για αυτό)

Διακοπή

Με το διάλειμμα μπορούμε να βγούμε από το βρόχο ανά πάσα στιγμή. Όπως φαντάζεστε πολύ χρήσιμο. Είναι αλήθεια ότι υπάρχουν και άλλες δομές όπως το while,

numeros = [1, 2, 4, 3, 5, 8, 6]
for n in numeros:
    if n == 3:
        break
else:
    print('No se encontró el número 3')

ΣΥΝΕΧΕΙΑ

Μας κάνει να πάμε στο επόμενο στοιχείο του βρόχου.

numeros = [1, 2, 4, 3, 5, 8, 6]
for n in numeros:
    if n == 3:
        continue
else:
    print('No se encontró el número 3')

https://j2logo.com/bucle-for-en-python/

Για… άλλο

Υπάρχει μια δομή που προέρχεται από το For, το οποίο είναι για ...άλλο

datos = [1, 2, 3, 4, 5]
for n in datos:
    if n == 2:
        break
else:
    print('No hay 2')

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

για _ σε επαναληπτικό

Το έχω δει σε ορισμένα προγράμματα αν και δεν το έχω χρησιμοποιήσει ποτέ.

Όταν επαναλαμβάνουμε ένα αντικείμενο, λίστα, λεξικό κ.λπ., αλλά το περιεχόμενο αυτών των στοιχείων δεν μας ενδιαφέρει, μπορούμε να το υποδείξουμε με _

Ένα παράδειγμα:

Θέλουμε να μετράμε τα στοιχεία μιας λίστας αλλά δεν μας ενδιαφέρει τι περιέχει, θέλουμε απλώς το μήκος της.

h2=[ 'Valencia', 'Castellón', 'Alicante']
count = 0
for _ in h2:
    cont += 1

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

γυρίζοντας προς τα πίσω

προς τα πίσω για βρόχο. Για επανάληψη από το τέλος στην αρχή

Χρησιμοποιεί τη συνάρτηση reversed() που εισήχθη στον python 3

h2=[ 'Valencia', 'Castellón', 'Alicante']

for j in reversed(h2):
    print (j)

Βρόχος με δύο δείκτες, την τιμή του iterable και τον δείκτη

Με το enumerate() μπορούμε να δουλέψουμε με τους δείκτες μιας συλλογής. Διότι πολλές φορές, εκτός από την τιμή του ίδιου του iterable αντικειμένου, μας ενδιαφέρει το ευρετήριό του.

h2=[ 'Valencia', 'Castellón', 'Alicante']

for j, h in enumerate(h2):
    print j, '-->', h2[i] 

Επανάληψη πάνω από 2 λίστες

Μια άλλη πολύ ενδιαφέρουσα επιλογή είναι η zip() που θα κάνει τη δουλειά μας πιο εύκολη και θα κάνει τον κώδικα μας πιο απλό και πιο ευανάγνωστο.

h2=[ 'Valencia', 'Castellón', 'Alicante']
cod=[100, 200, 300]

for j, h in zip(h2, cod):
    print h2, '-->', cod 

Στην Python 2.x το izip() χρησιμοποιήθηκε για τη βελτίωση αυτής της συνάρτησης, αλλά στην Python 3 το izip είναι zip()

Επανάληψη με ταξινομημένη σειρά

Επανάληψη με τη σειρά με βάση την τιμή του αντικειμένου αντί με το ευρετήριό του. χρησιμοποιείται sorted().

colors = ['rojo', 'amarillo', 'verde']

for color in sorted(colors):
    print color

Και αν θέλουμε να το κάνουμε ανάποδα

colors = ['rojo', 'amarillo', 'verde']

for color in sorted(colors, reverse=True):
    print color

Προσαρμοσμένη σειρά ταξινόμησης

colors = ['rojo', 'amarillo', 'verde']

for color in sorted(colors, key=len):
    print color

Sentinel Value in for loop

Η τιμή φρουρού είναι μια τιμή που προκαλεί το τέλος του βρόχου. Συνήθως παρουσιάζεται σε βρόχο while, αλλά ο Raymond Hettinger μας δείχνει πώς να το χρησιμοποιήσουμε με ένα for, το οποίο είναι πιο γρήγορο

blocks = []
for block in iter(partial(f.read, 32), ''):
    blocks.append(block)
    print (block)

Τραβέρσα λεξικά με για

Τα λεξικά είναι απαραίτητα εργαλεία για την έκφραση σχέσεων και τη δημιουργία ομαδοποιήσεων.

Μπορείτε να διαβάσετε το λεξικό με παραδοσιακό τρόπο με το for, αλλά αυτό δεν θα επιστρέψει όλες τις πληροφορίες, δεν θα μπορούμε να εργαστούμε με τιμές και δείκτες όπως αυτό, εάν δεν αρχίσουμε να προσθέτουμε μετρητές και άλλα στοιχεία.

d = {'casa': 'azul', 'coche': 'rojo', 'hombre': 'verde'}

for k in d.keys():
    if k.startswith('r'):
        del d[k]

Με αυτόν τον τρόπο, εκτός από το να δούμε τα στοιχεία, μπορούμε να τροποποιήσουμε το λεξικό αλλάζοντας στοιχεία ή διαγράφοντας τα, την ίδια στιγμή που επαναλαμβάνεται ο βρόχος for.

Η d.keys() καλεί τα ορίσματα και δημιουργεί ένα αντίγραφο που αποθηκεύει σε μια λίστα που μπορούμε να τροποποιήσουμε.

Για να λάβετε ευρετήρια και τιμές αντί για κάτι παραδοσιακό και αυτό είναι το πρώτο πράγμα που έρχεται στο μυαλό για όσους από εμάς ξεκινούν τον προγραμματισμό

for k in d:
    print k, '-->', d[k]

Θα χρησιμοποιήσουμε αυτήν την πολύ πιο γρήγορη επιλογή

for k, v in d.items():
    print k, '-->', v

iteritems() παρά αντικείμενα()

Συζήτηση για το Loops in Python από τον Raymond Hettinger

Είναι ένα παλιό αλλά πολύ ενδεικτικό βίντεο, όπου στα πρώτα 20 λεπτά ο Raymond Hettinger μας διδάσκει τις διαφορετικές δυνατότητες των βρόχων στην Python και μας δίνει παραδείγματα για το πώς μετατρέπουν δομές που χρησιμοποιούνται ευρέως από τους ανθρώπους σε συναρτήσεις, για να κάνουν τον βρόχο πιο ευανάγνωστο και απλούστερο. . κωδικός.

Αφήστε ένα σχόλιο