Цикъл for в 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 и което много хора пренебрегват, получавайки грешки в кода.

Повторете цикъла for точен брой пъти.

Ако искаме да се повтори определен брой пъти, както можем да направим в C++, ще трябва да използваме range(). За да повторим 10 пъти, ще използваме a

for element in Range(9):
    instructions

Поставяме 9, а не 10, защото диапазонът започва от 0, така че от 0 до 9 има 10 итерации или завъртания на цикъла.

Познаването на Range() ни позволява, вместо да поставим число вътре, да поставим променлива, с която ще имаме много повече контрол.

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

Функцията Range има много опции, ще говоря за нея в друга публикация, за да не смесвам съдържанието и да го развия максимално.

Може да се направи много повече, за да се контролира потока на for цикъла.

Изявления за прекъсване и продължаване

Има 2 много полезни функции, които ни позволяват да направим for цикъл много функционален, fon break и continue. Те обикновено се използват с условни изрази, if, проверка дали нещо е вярно.

Те работят в други цикли и има друг интересен оператор, който е pass, който е израз, който се изпълнява, но не прави нищо и е идеален, когато искаме да дефинираме структура, която изисква команди, но искаме да ги поставим по-късно (коментарите са не е полезно за това)

Почивка

С break можем да излезем от цикъла по всяко време. Както си представяте много полезно. Вярно е, че има други структури като Докато,

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, която е за … else

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

В много сайтове препоръчват да не се злоупотребява с тази практика. Наистина не знам какви са предимствата, по-бързо ли е?

Lo recomiendan en el curso de Introducción a Python de Harvard. Cuando iteramos sobre una variable pero no vamos a usrarla para nada ponemos el undescore, es como comentan allí un Pythonic, una práctica de Python que no se ve en otros idiomas, ayuda a la legibilidad por no tener que estar pendiente de para qué sirve.

примка назад

назад за цикъл. Да повтарям от края към началото

Той използва функцията reversed(), въведена в Python 3

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

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

Цикъл с два индекса, стойност на итерируемия и индекс

С enumerate() можем да работим с индексите на колекция. Защото много пъти, в допълнение към стойността на самия итерируем обект, ние се интересуваме от неговия индекс.

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 в for цикъл

Стойността на контролера е стойност, която кара цикъла да приключи. Обикновено се представя в цикъл while, но Raymond Hettinger ни показва как да го използваме с for, което е по-бързо

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

Обхождане на речници с for

Речниците са основни инструменти за изразяване на връзки и групиране.

Можете да преминете през речника по традиционен начин с 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

iritems() от items()

Говорете за цикли в Python от Реймънд Хетингер

Това е старо, но много илюстративно видео, където в първите 20 минути Raymond Hettinger ни учи на различните възможности на циклите в Python и ни дава примери за това как те трансформират широко използвани от хората структури във функции, за да направят цикъла по-четлив и по-прост .код.

Ако сте неспокоен човек като нас и искате да си сътрудничите в поддръжката и подобряването на проекта, можете да направите дарение. Всички пари ще отидат за закупуване на книги и материали, за да експериментирате и да правите уроци

Оставете коментар