Files
freeCodeCamp/guide/russian/python/for-loop-statements/index.md
aidilumarov 1308122836 Исправление некоторых ошибок в артикле for-loop-statements (#25982)
* Обновить index.md

Исправление некоторых ошибок, и удаление частей которые don't make any sense.

* Update index.md
2018-12-25 22:08:39 +04:00

158 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: For Loop Statements
localeTitle: Записи цикла
---
## Записи цикла
Python использует цикл for для перебора списка элементов. В отличие от C или Java, которые используют цикл for для изменения значения в шагах и доступа к чему-то, например массиву, используя это значение.
Для циклов итерации по структурам данных на основе сбора данных, таким как списки, кортежи и словари.
Основной синтаксис:
```python
for value in list_of_values:
# use value inside this block
```
В общем, вы можете использовать что-либо как значение итератора, где могут быть назначены записи итерации. Например, вы можете распаковать кортежи из списка кортежей:
```python
list_of_tuples = [(1,2), (3,4)]
for a, b in list_of_tuples:
print("a:", a, "b:", b)
```
С другой стороны, вы можете перебрать все, что итерабельно. Вы можете вызвать функцию или использовать литерал списка.
```python
for person in load_persons():
print("The name is:", person.name)
```
```python
for character in ["P", "y", "t", "h", "o", "n"]:
print("Give me a '{}'!".format(character))
```
Некоторые способы использования циклов For:
**Итерация по функции range ()**
```python
for i in range(10):
print(i)
```
Вместо того, чтобы быть функцией, диапазон фактически является неизменным типом последовательности. Результат будет содержать результаты от нижней границы, т. Е. 0 до верхней границы, т. Е. 10, но исключая 10.By по умолчанию нижняя граница или начальный индекс устанавливается на ноль. Вывод:
```
>
0
1
2
3
4
5
6
7
8
9
>
```
Кроме того, можно указать нижнюю границу последовательности и даже шаг последовательности, добавив второй и третий параметры.
```python
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 фактически не создает статический список во время выполнения, например, диапазон. Он создает ценности по мере необходимости с помощью специального метода, называемого yielding. Этот метод используется с типом объекта, который известен как генераторы.
Еще одна вещь, которую нужно добавить. В Python 3.x функция xrange больше не существует. Функция диапазона теперь делает то, что делает xrange в Python 2.x
**Итерировать значения в списке или кортеже**
```python
A = ["hello", 1, 65, "thank you", [2, 3]]
for value in A:
print(value)
```
Вывод:
```
>
hello
1
65
thank you
[2, 3]
>
```
**Итерации по клавишам в словаре (aka hashmap)**
```python
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"\]
```python
for a, b in zip(A, B):
print(a, b, a == b)
```
Вывод:
```
a a True
b d False
c e False
```
Можно **for** использовать с функцией **enumerate()** для получения индекса итерируемого объекта:
```python
A = ['Первый объект', 'Второй объект', 'Третий объект']
for index, item in enumerate(A):
print('Индекс:', index, '--->', item)
```
Вывод:
```
Индекс: 0 ---> Первый объект
Индекс: 1 ---> Второй объект
Индекс: 2 ---> Третий объект
```
На самом деле, функция **for** может быть использована с любым объектом который годен для итерации, включая итераторов и генераторов (iterator objects, generator objects). Дополнительная информация доступна по следующим ссылкам:
* [Документация Python2 для цикла](https://docs.python.org/2.7/tutorial/controlflow.html#for-statements)
* [Python3 для документации по циклам](https://docs.python.org/3/tutorial/controlflow.html#for-statements)