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 рет қайталау үшін біз a пайдаланамыз
for element in Range(9): instructions
Біз 9 емес, 10-ды қоямыз, себебі Диапазон 0-ден басталады, сондықтан 0-ден 9-ға дейін циклдің 10 итерациясы немесе бұрылысы бар.
Range() функциясын білу бізге санды ішіне қоюдың орнына айнымалы мәнді қоюға мүмкіндік береді, осылайша бізде әлдеқайда көп басқару болады.
var = 10 for element in Range(var): instructions
Диапазон функциясының көптеген нұсқалары бар, мазмұнды араластырып, оны барынша дамытпау үшін мен бұл туралы басқа постта айтамын.
For циклінің ағынын басқару үшін көп нәрсені жасауға болады.
Үзіліс және жалғастыру мәлімдемелері
For циклін өте функционалды етуге, үзіліс пен жалғастыруға мүмкіндік беретін 2 өте пайдалы мүмкіндік бар. Олар әдетте бірдеңенің ақиқаттығын тексеру үшін, егер, шартты сөздермен қолданылады.
Олар басқа циклдарда жұмыс істейді және тағы бір қызықты оператор бар, ол - орындалады, бірақ ештеңе жасамайды және командаларды қажет ететін құрылымды анықтағымыз келсе, бірақ біз оларды кейінірек қойғымыз келген кезде өте қолайлы оператор болып табылады (түсініктемелер бұл үшін пайдалы емес)
үзіліс
Үзіліспен біз кез келген уақытта циклден шыға аламыз. Сіз ойлағандай өте пайдалы. 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
Көптеген сайттарда бұл тәжірибені теріс пайдаланбауға кеңес береді. Мен оның артықшылықтарын білмеймін, бұл жылдамырақ па?
Гарвардтың Питонға кіріспе курсында ұсынылады. Біз айнымалыны қайталағанда, бірақ оны мүлде пайдаланбайтын болсақ, біз декорацияны қоямыз, олар сол жерде Pythonic, басқа тілдерде кездеспейтін Python тәжірибесіне түсініктеме береді, бұл оқылуды қажет етпей, оқуға көмектеседі. не үшін екенін біледі.
артқа қарай айналдыру
кері for циклі. Соңынан басына дейін қайталау
Ол 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 мәні
Сентинел мәні - цикл аяқталуына әкелетін мән. Ол әдетте уақытша циклде ұсынылады, бірақ Рэймонд Хеттингер бізге оны жылдамырақ 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-дағы циклдердің әртүрлі мүмкіндіктерін үйретеді және циклды оқуға ыңғайлы және қарапайым ету үшін адамдар кеңінен қолданатын құрылымдарды функцияларға қалай түрлендіретіні туралы мысалдар береді. .код.