При использовании цикла for что конкретно указывает каждый аргумент? - PullRequest
0 голосов
/ 07 ноября 2019

Я новичок в изучении Python и у меня есть уточняющий вопрос относительно циклов.

Например:

dictionary_a = {"A": "Apple", "B": "Ball", "C": "Cat"}
dictionary_b = {"A": "Ant", "B": "Basket", "C": "Carrot"}
temp = ""
for k_a, v_a in dictionary_a.items():
    temp = dictionary_b[k_a]
    dictionary_b[k_a] = v_a
    dictionary_a[k_a] = temp

Как именно k_a проходит через интерпретатор? Я понимаю v_a in dictionary_a.items() как просто итерацию последовательности in любой коллекции.

Но когда циклы for имеют синтаксис for x, y in z, я не совсем понимаю, какие значения x принимает с каждой итерацией.

Надеюсь, у меня есть смысл. Цени любую помощь.

Ответы [ 2 ]

1 голос
/ 07 ноября 2019

при итерации по dict.items() он возвращает кортеж 2, поэтому при предоставлении двух переменных в цикле для него каждому элементу кортежа будет назначено значение.

Вот еще один пример, который поможет вампонять механику:

coordinates = [(1, 2, 3), (4, 5, 6)]

for x, y, z in coordinates:
    print(x)

Редактировать: распаковку можно сделать еще сложнее. Например, предположим, что вы заинтересованы в том, чтобы собрать только первый и последний элемент в длинный список, вы можете действовать следующим образом:

long_list = 'This is a very long list to process'.split()
first_item, *_, last_item = long_list
0 голосов
/ 07 ноября 2019

В Python вы можете «преобразовывать» несколько переменных из другой итерируемой переменной.

Давайте использовать этот пример:

>>> a, b = [1, 2]
>>> a
1
>>> b
2

Выше описывается поведение, которое происходит, когда вы зацикливаетесь на словарес методом dict.items().

Вот пример того, что происходит:

>>> a = {"abc":123, "def":456}
>>> a.items()
dict_items([('abc', 123), ('def', 456)])
>>> for i in a.items():
...   i
...
('abc', 123)
('def', 456)
>>>
...