За цикли в Python

За Loop Statements

Python използва цикъл for, за да итерира списък с елементи. За разлика от C или Java, които използват цикъла for, за да променят стойност на стъпки и да получат достъп до нещо като масив, използвайки тази стойност.

За цикли итерация върху базирани на колекции структури от данни като списъци, кортежи и речници.

Основният синтаксис е:

for value in list_of_values: # use value inside this block

Като цяло можете да използвате каквото и да е като стойност на итератор, където могат да бъдат присвоени записи на итерируемия. Например можете да разопаковате кортежи от списък с кортежи:

list_of_tuples = [(1,2), (3,4)] for a, b in list_of_tuples: print("a:", a, "b:", b)

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

for person in load_persons(): print("The name is:", person.name)
for character in ["P", "y", "t", "h", "o", "n"]: print("Give me a '{}'!".format(character))

Някои начини, по които се използват цикли For:

Итерация над функцията range ()

for i in range(10): print(i)

Вместо да бъде функция, диапазонът всъщност е неизменен тип последователност. Изходът ще съдържа резултати от долната граница, т.е. 0 до горната граница, т.е. 10, но с изключение на 10. По подразбиране долната граница или началният индекс е зададен на нула. Изход:

> 0 1 2 3 4 5 6 7 8 9 >

Освен това може да се посочи долната граница на последователността и дори стъпката на последователността, като се добавят втори и трети параметър.

for i in range(4,10,2): #From 4 to 9 using a step of two print(i)

Изход:

> 4 6 8 >

функция xrange ()

В по-голямата си част xrange и range са абсолютно еднакви по отношение на функционалността. И двамата предоставят начин за генериране на списък с цели числа, които да използвате, както искате. Единствената разлика е, че диапазонът връща обект от списък на Python, а xrange връща обект xrange. Това означава, че xrange всъщност не генерира статичен списък по време на изпълнение, както го прави диапазонът. Той създава стойностите според нуждите ви със специална техника, наречена отстъпване. Тази техника се използва с тип обект, известен като генератори.

Още нещо, което да добавите. В Python 3.x функцията xrange вече не съществува. Функцията за обхват сега прави това, което xrange прави в Python 2.x

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

A = ["hello", 1, 65, "thank you", [2, 3]] for value in A: print(value)

Изход:

> hello 1 65 thank you [2, 3] >

Итерация върху ключове в речник (известен още като hashmap)

fruits_to_colors = {"apple": "#ff0000", "lemon": "#ffff00", "orange": "#ffa500"} for key in fruits_to_colors: print(key, fruits_to_colors[key])

Изход:

> apple #ff0000 lemon #ffff00 orange #ffa500 >

Итерирайте над два списъка с еднакъв размер в един цикъл с функцията zip ()

A = ["a", "b", "c"] B = ["a", "d", "e"] for a, b in zip(A, B): print a, b, a == b 

Изход:

> a a True b d False c e False >

Итерация върху списък и получаване на съответния индекс с функцията enumerate ()

A = ["this", "is", "something", "fun"] for index,word in enumerate(A): print(index, word)

Изход:

> 0 this 1 is 2 something 3 fun >

Често използван случай е итерация над речник:

for name, phonenumber in contacts.items(): print(name, "is reachable under", phonenumber)

Ако абсолютно ви е необходим достъп до текущия индекс на вашата итерация, НЕ използвайте range(len(iterable))! Това е изключително лоша практика и ще ви накара да се посмеете много от старши разработчици на Python. enumerate()Вместо това използвайте вградената функция :

for index, item in enumerate(shopping_basket): print("Item", index, "is a", item)

for / else изявления

Pyhton ви позволява да използвате else с за цикли, а случаят else се изпълнява, когато не е изпълнено нито едно от условията в тялото на цикъла. За да използваме else, трябва да използваме breakинструкция, за да можем да излезем от цикъла при условие на satsfied. Ако не избухнем, тогава ще бъде изпълнена частта else.

week_days = ['Monday','Tuesday','Wednesday','Thursday','Friday'] today = 'Saturday' for day in week_days: if day == today: print('today is a week day') break else: print('today is not a week day')

В горния случай изходът ще бъде, today is not a week dayтъй като прекъсването в цикъла никога няма да бъде изпълнено.

Итерация върху списък с помощта на вградена функция цикъл

Можем също да итерираме вградени, използвайки python, например, ако трябва да добавим главни букви в списъка от списък, можем просто да направим следното:

A = ["this", "is", "awesome", "shinning", "star"] UPPERCASE = [word.upper() for word in A] print (UPPERCASE)

Изход:

> ['THIS', 'IS', 'AWESOME', 'SHINNING', 'STAR'] >

Повече информация:

  • Python2 за документация за цикъл
  • Python3 за документация за цикъл