Для циклів у Python

Для циклічних виписок

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

Здебільшого, діапазон x і діапазон абсолютно однакові з точки зору функціональності. Вони обидва надають спосіб створити список цілих чисел, якими ви хочете користуватися. Єдина відмінність полягає в тому, що діапазон повертає об'єкт списку 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)

для операторів / else

Pyhton дозволяє вам використовувати else with для циклів, інший випадок виконується, коли жодна з умов з в тілі циклу не була задоволена. Щоб використати else, ми повинні використати breakоператор, щоб ми могли вирватися з циклу за умови satsfied. Якщо ми не вирвемося, тоді буде виконана інша частина.

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 для документації циклу