Python-da döngə üçün

Python-da For loop digər proqramlaşdırma dillərindən fərqli xüsusiyyətlərə malikdir. Ən çox istifadə olunan döngələrdən birindən maksimum yararlanmaq üçün öyrəndiklərimi sizə buraxıram.

Python-da o, təkrarlana bilən obyekti təkrarlamaq üçün nəzərdə tutulub, istər siyahı, istər obyekt, istərsə də başqa element.

Aşağıdakı strukturdur

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

for j in h2:
   instructions

Burada h2 təkrarlana bilən elementdir, məsələn, siyahı h2=[ 'Valensiya', 'Castellón', 'Alicante']. Döngənin 3 iterasiyası olacaq, birincidə j=Valensiya ikincisində j=Castellón dəyişəni.

Bununla biz istədiyimiz təlimatları müəyyən edə bilərik, həmişə girintiyi xatırlayaraq, Python-da vacib olan və bir çox insanın məhəl qoymadığı, kodda səhvlər əldə edə bilərik.

Döngə üçün dəqiq sayda təkrarlayın.

Əgər onun C++ dilində edə biləcəyimiz kimi müəyyən sayda təkrarlanmasını istəyiriksə, range() istifadə etməli olacağıq. 10 dəfə təkrarlamaq üçün a istifadə edəcəyik

for element in Range(9):
    instructions

Biz 9-u qoyuruq, 10-u yox, çünki Range 0-dan başlayır, ona görə də 0-dan 9-a qədər dövrənin 10 təkrarı və ya dönüşü var.

Range() funksiyasını bilmək bizə bir ədədi içəriyə qoymaq əvəzinə, dəyişən qoymağa imkan verir ki, biz daha çox nəzarətə malik olacağıq.

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

Range funksiyasının bir çox variantı var, məzmunu qarışdırıb mümkün qədər inkişaf etdirməmək üçün bu haqda başqa bir yazıda danışacam.

For döngəsinin axınına nəzarət etmək üçün daha çox şey edilə bilər.

Break and Continue ifadələri

Bizə for loopunu çox funksional etməyə, fasilə və davam etməyə imkan verən 2 çox faydalı xüsusiyyət var. Onlar adətən bir şeyin doğru olub olmadığını yoxlamaq üçün, əgər şərti ilə istifadə olunur.

Onlar digər döngələrdə işləyirlər və başqa bir maraqlı ifadə də var ki, o da passdir ki, o da yerinə yetirilən, lakin heç bir şey etməyən və əmrlər tələb edən strukturu müəyyən etmək istədiyimiz, lakin onları sonradan qoymaq istədiyimiz zaman üçün ideal olan ifadədir (şərhlər bunun üçün faydalı deyil)

Sındırmaq

Fasilə ilə biz istənilən vaxt döngədən çıxa bilərik. Təsəvvür etdiyiniz kimi çox faydalıdır. Doğrudur, while kimi başqa strukturlar da var.

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')

Davam etdirmək

Bu, bizi döngənin növbəti elementinə keçirməyə məcbur edir.

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/

Üçün… başqa

For-dan əldə edilən bir quruluş var, başqa üçün olan

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

Bu struktur bunun zəruri olduğunu və bir çox insanın buna nail olmaq üçün alternativ yollardan istifadə etdiyini gördükdən sonra yaranıb. Beləliklə, onlar insanlara kömək edir və daha oxunaqlı kod əldə edirlər

_ üçün təkrarlanan

Bunu heç vaxt istifadə etməsəm də bəzi proqramlarda görmüşəm.

Obyekt, siyahı, lüğət və s. təkrarlananda, lakin həmin elementlərin məzmunu bizi maraqlandırmırsa, onu _ ilə göstərə bilərik.

Məsələn:

Biz siyahının elementlərini saymaq istəyirik, lakin onun nə ehtiva etdiyi bizi maraqlandırmır, sadəcə onun uzunluğunu istəyirik.

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

Bir çox saytlarda bu təcrübədən sui-istifadə etməməyi tövsiyə edirlər. Mən, həqiqətən, onun təqdim etdiyi üstünlükləri bilmirəm, daha sürətlidir?

geriyə dönmə

döngə üçün geriyə. Sondan əvvələ qədər təkrarlamaq

Python 3-də təqdim edilən reversed() funksiyasından istifadə edir

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

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

İki indekslə dönmə, təkrarlananın dəyəri və indeks

enumerate() ilə biz kolleksiyanın indeksləri ilə işləyə bilərik. Çünki biz dəfələrlə təkrarlana bilən obyektin dəyərindən əlavə onun indeksi ilə də maraqlanırıq.

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

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

2 siyahıdan çox təkrarlanır

Digər çox maraqlı variant isə işimizi asanlaşdıracaq və kodumuzu daha sadə və oxunaqlı edəcək zip()-dir.

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

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

Python 2.x-də izip() bu funksiyanı təkmilləşdirmək üçün istifadə edilib, lakin Python 3-də izip zip()-dir.

Çeşidlənmiş qaydada dönmə

Obyektin indeksinə görə deyil, dəyərinə görə sıra ilə təkrarlayın. sorted() istifadə olunur

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

for color in sorted(colors):
    print color

Və əgər biz bunu geriyə doğru etmək istəyiriksə

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

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

Fərdi çeşidləmə sırası

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

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

Döngü üçün Sentinel Dəyəri

Sentinel dəyəri döngənin bitməsinə səbəb olan dəyərdir. O, adətən bir müddət ərzində təqdim olunur, lakin Raymond Hettinger bizə onu daha sürətli olan for ilə necə istifadə edəcəyimizi göstərir.

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

üçün ilə lüğətləri keçin

Lüğətlər əlaqələri ifadə etmək və qruplaşmalar yaratmaq üçün vacib vasitələrdir.

Siz ənənəvi şəkildə for ilə lüğətdən keçə bilərsiniz, lakin bu, bütün məlumatları qaytarmayacaq, sayğaclar və digər elementlər əlavə etməyə başlamasaq, bu kimi dəyərlər və indekslərlə işləyə bilməyəcəyik.

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

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

Bu yolla, elementləri görməklə yanaşı, elementləri dəyişdirməklə və ya onları silməklə lüğəti dəyişdirə bilərik, eyni zamanda for döngəsi təkrarlanır.

d.keys() arqumentləri çağırır və dəyişdirə biləcəyimiz siyahıda saxladığı surəti çıxarır.

Ənənəvi bir şey əvəzinə indekslər və dəyərlər əldə etmək və proqramlaşdırmaya başlayanların ağlına gələn ilk şey budur

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

Biz bu variantdan daha sürətli istifadə edəcəyik

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

iteritems() maddələrdən()

Raymond Hettinger tərəfindən Python-da Döngülər haqqında danışın

Bu köhnə, lakin çox illüstrativ videodur, burada ilk 20 dəqiqədə Raymond Hettinger bizə Python-da müxtəlif dövrə imkanlarını öyrədir və dövrəni daha oxunaqlı və sadə etmək üçün insanların geniş istifadə etdiyi strukturları funksiyalara necə çevirdiyinə dair nümunələr verir. .kod.

Şərh yaz