Я хочу задать вопрос о zip()
в python.
Рассмотрим следующий простой код для демонстрации zip()
.
a = ['1', '2', '3']
b = ['a', 'b', 'c']
for key, value in zip(a, b):
print(key + value)
Я знаю, что создается следующий вывод:
1a
2b
3c
, где каждый элемент в соответствующих списках объединяется.
Как новичок в Python3, я понимаю следующее о zip()
:
zip()
создает объект zip
, связанный с OOP, который можно показать с помощью list()
:
my_zip = zip(a, b)
print(my_zip)
print(list(my_zip))
>>> <zip object at 0xsomelocation>
>>>[('1', 'a'), ('2', 'b'), ('3', 'c')]
, так что объект zip
является списком кортежей.
Моя путаница заключается в этой строке из исходного блока кода, который я на самом деле не понимаю:
for key, value in zip(a, b)
Моя интерпретация заключается в том, что, когда мы зацикливаемся на нашем zip
объекте , у которого есть некоторый врожденный __next__()
метод, вызываемый нашим for
l oop, мы по очереди * l oop через каждый кортеж.
Для нашей первой итерации l oop мы получаем:
('1', 'a')
и python присваивает '1'
и 'a'
нашим переменным key
и value
соответственно. Это повторяется до конца измерений списка, т.е. 3 раза.
Это правильная интерпретация того, что происходит в нашем коде?