mirror of
https://github.com/satwikkansal/wtfpython
synced 2024-11-24 20:14:23 +01:00
Translate For what? example
This commit is contained in:
parent
83bdff8e33
commit
654da92e88
54
translations/README-ru.md
vendored
54
translations/README-ru.md
vendored
@ -733,3 +733,57 @@ Iteration 0
|
||||
- Предостережение - если в блоке `finally` выполняется оператор `return` или `break`, то временно сохраненное исключение отбрасывается.
|
||||
|
||||
---
|
||||
|
||||
|
||||
### ▶ Для чего?
|
||||
<!-- Example ID: 64a9dccf-5083-4bc9-98aa-8aeecde4f210 --->
|
||||
```py
|
||||
some_string = "wtf"
|
||||
some_dict = {}
|
||||
for i, some_dict[i] in enumerate(some_string):
|
||||
i = 10
|
||||
```
|
||||
|
||||
**Вывод:**
|
||||
```py
|
||||
>>> some_dict # Словарь с индексами
|
||||
{0: 'w', 1: 't', 2: 'f'}
|
||||
```
|
||||
|
||||
#### 💡 Объяснение:
|
||||
|
||||
* Оператор `for` определяется в [грамматике Python](https://docs.python.org/3/reference/grammar.html) как:
|
||||
```
|
||||
for_stmt: 'for' exprlist 'in' testlist ':' suite ['else' ':' suite]
|
||||
```
|
||||
Где `exprlist` - цель присваивания. Это означает, что эквивалент `{exprlist} = {next_value}` **выполняется для каждого элемента** в итерируемом объекте.
|
||||
Интересный пример, иллюстрирующий это:
|
||||
```py
|
||||
for i in range(4):
|
||||
print(i)
|
||||
i = 10
|
||||
```
|
||||
|
||||
**Результат:**
|
||||
```
|
||||
0
|
||||
1
|
||||
2
|
||||
3
|
||||
```
|
||||
|
||||
Не ожидали, что цикл будет запущен только один раз?
|
||||
|
||||
**💡 Объяснение:**.
|
||||
|
||||
- Оператор присваивания `i = 10` никогда не влияет на итерации цикла из-за того, как циклы for работают в Python. Перед началом каждой итерации следующий элемент, предоставляемый итератором (в данном случае `range(4)`), распаковывается и присваивается переменной целевого списка (в данном случае `i`).
|
||||
|
||||
* Функция `enumerate(some_string)` на каждой итерации выдает новое значение `i` (счетчик-инкремент) и символ из `some_string`. Затем она устанавливает (только что присвоенный) ключ `i` словаря `some_dict` на этот символ. Развертывание цикла можно упростить следующим образом:
|
||||
```py
|
||||
>>> i, some_dict[i] = (0, 'w')
|
||||
>>> i, some_dict[i] = (1, 't')
|
||||
>>> i, some_dict[i] = (2, 'f')
|
||||
>>> some_dict
|
||||
```
|
||||
|
||||
---
|
||||
|
Loading…
Reference in New Issue
Block a user