mirror of
https://github.com/freeCodeCamp/freeCodeCamp.git
synced 2026-09-24 23:01:18 +08:00
* Обновить index.md Исправление некоторых ошибок, и удаление частей которые don't make any sense. * Update index.md
158 lines
5.9 KiB
Markdown
158 lines
5.9 KiB
Markdown
---
|
|
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)
|