Книга: PyNEng
Назад: if/elif/else
Дальше: while

for

for

Цикл for проходится по указанной последовательности и выполняет действия, которые указаны в блоке for.

Примеры последовательностей элементов, по которым может проходиться цикл for:

  • строка
  • список
  • словарь
  • функция
  • любой

Цикл for проходится по строке:

In [1]: for letter in 'Test string':    ...:     print(letter)    ...:      T e s t  s t r i n g 

В цикле используется переменная с именем letter. Хотя имя может быть любое, удобно, когда имя подсказывает, через какие объекты проходит цикл.

Пример цикла for с функцией range():

In [2]: for i in range(10):    ...:     print('interface FastEthernet0/{}'.format(i))    ...:      interface FastEthernet0/0 interface FastEthernet0/1 interface FastEthernet0/2 interface FastEthernet0/3 interface FastEthernet0/4 interface FastEthernet0/5 interface FastEthernet0/6 interface FastEthernet0/7 interface FastEthernet0/8 interface FastEthernet0/9 

В этом цикле используется range(10). Range генерирует числа в диапазоне от нуля до указанного числа (в данном примере - до 10), не включая его.

В этом примере цикл проходит по списку VLANов, поэтому переменную можно назвать vlan:

In [3]: vlans = [10, 20, 30, 40, 100] In [4]: for vlan in vlans:    ...:     print('vlan {}'.format(vlan))    ...:     print(' name VLAN_{}'.format(vlan))    ...:      vlan 10  name VLAN_10 vlan 20  name VLAN_20 vlan 30  name VLAN_30 vlan 40  name VLAN_40 vlan 100  name VLAN_100 

Когда цикл идет по словарю, то фактически он проходится по ключам:

In [5]: r1 = {  'IOS': '15.4',  'IP': '10.255.0.1',  'hostname': 'london_r1',  'location': '21 New Globe Walk',  'model': '4451',  'vendor': 'Cisco'}  In [6]: for k in r1:    ....:     print(k)    ....:      vendor IP hostname IOS location model 

Если необходимо выводить пары ключ-значение в цикле:

In [7]: for key in r1:    ....:     print(key + ' => ' + r1[key])    ....:      vendor => Cisco IP => 10.255.0.1 hostname => london_r1 IOS => 15.4 location => 21 New Globe Walk model => 4451 

В словаре есть специальный метод items, который позволяет проходится в цикле сразу по паре ключ:значение:

In [8]: for key, value in r1.items():    ....:     print(key + ' => ' + value)    ....:      vendor => Cisco IP => 10.255.0.1 hostname => london_r1 IOS => 15.4 location => 21 New Globe Walk model => 4451 

Метод items возвращает специальный объект view, который отображает пары ключ-значение:

In [9]: r1.items() Out[9]: dict_items([('IOS', '15.4'), ('IP', '10.255.0.1'), ('hostname', 'london_r1'), ('location', '21 New Globe Walk'), ('model', '4451'), ('vendor', 'Cisco')]) 
Назад: if/elif/else
Дальше: while