Pythonдо цикл үчүн

Python тилиндеги For цикли башка программалоо тилдерине караганда бир нече өзгөчөлүктөргө ээ. Мен сизге эң көп колдонулган циклдердин биринен көбүрөөк пайда алуу үчүн үйрөнүп жаткан нерсемди калтырам.

Pythonдо ал тизме, объект же башка элемент болобу, кайталануучу объект аркылуу кайталанууга арналган.

төмөнкү структура болуп саналат

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

for j in h2:
   instructions

Бул жерде h2 кайталануучу элемент, мисалы тизме h2=[ 'Валенсия', 'Кастеллон', 'Аликанте']. Цикл 3 итерацияга ээ болот, биринчисинде j=Valencia экинчисинде j=Castellón өзгөрмөсү.

Ушуну менен биз каалаган инструкцияларды аныктай алабыз, ар дайым чегинүүнү эстеп, Pythonдо маанилүү жана көп адамдар этибарга албай, коддо ката кетирип жатышат.

For циклин так санда кайталаңыз.

Эгерде биз анын C++ тилиндегидей бир нече жолу кайталанышын кааласак, анда range() колдонушубуз керек болот. 10 жолу кайталоо үчүн биз а колдонобуз

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 циклин абдан функционалдуу кылып, үзгүлтүккө жана улантууга мүмкүнчүлүк берет. Алар, адатта, бир нерсенин чын экенин текшерүү үчүн, шарттуу сөздөр менен колдонулат.

Алар башка циклдерде иштешет жана дагы бир кызыктуу билдирүү бар - өтүү, ал аткарылган, бирок эч нерсе жасабаган жана биз буйруктарды талап кылган структураны аныктагыбыз келгенде, бирок биз аларды кийинчерээк киргизгибиз келгенде идеалдуу болгон билдирүү (комментарийлер бул үчүн пайдалуу эмес)

тыныгуу

Тыныгуу менен биз циклден каалаган убакта чыга алабыз. Сиз ойлогондой, абдан пайдалуу. Ырас, 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 дегенден алынган структура бар, ал 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

Көптөгөн сайттарда алар бул практиканы кыянаттык менен колдонбоону сунушташат. Мен чынында эле анын кандай артыкчылыктарды берерин билбейм, ал тезирээк болобу?

артка айлануу

for loop артка. Аягына чейин кайталоо

Ал python 3те киргизилген reversed() функциясын колдонот

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 Value for циклинде

Сентинел мааниси циклдин бүтүшүнө себеп болгон маани. Ал, адатта, убактылуу циклде көрсөтүлөт, бирок Рэймонд Хеттингер аны 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

iteritems() нерселерге() караганда

Рэймонд Хеттингердин Pythonдогу циклдер жөнүндө сүйлөшүңүз

Бул эски, бирок абдан иллюстрациялуу видео, анда биринчи 20 мүнөттүн ичинде Раймонд Хеттингер бизге Pythonдогу циклдердин ар кандай мүмкүнчүлүктөрүн үйрөтөт жана циклди окууга ыңгайлуу жана жөнөкөй кылуу үчүн алар кеңири колдонулган структураларды функцияларга кантип айландырарын мисалдар менен берет. .код.

Эгерде сиз биз сыяктуу тынчыбаган адам болсоңуз жана долбоордун оңдоп-түзөөсүнө жана жакшыртуусуна кызматташууну кааласаңыз, кайрымдуулук кыла аласыз. Бардык акча эксперимент жана окуу куралдары үчүн китептерди жана материалдарды сатып алууга кетет

Комментарий калтыруу