Я думаю, что это ожидаемое поведение!
Учтите, что [1,2], [3,4]
- это литерал кортежа, эквивалентный кортежу ([1,2], [3,4])
.(Вы можете использовать это, даже не замечая этого, например, при назначении нескольких значений с помощью a, b, c = 10, 20, 30
без учета ()
...).
Итак, в вашем примере цикл повторяет этот список следующим образом:
# First iteration we get:
x, y = [1, 2]
# Which is the same as:
x = 1
y = 2
# Which would print:
print(x, y, x+y)
>> 1, 2, 3
# Second iteration we get:
x, y = [3, 4]
# Which is the same as:
x = 3
y = 4
# Which would print:
print(x, y, x+y)
>> 3, 4, 7
Имеет ли это смысл сейчас?
Учитывая zip: If zipбудет делать то же самое, тогда Я бы с подозрением!Как это очень распространенное и полезное, но совершенно излишнее дело?Разве никто не заметил ?Так что вы не должны ожидать, что они сделают то же самое!;-)
Редактировать из-за запроса указателя на документацию.
От 5.3 Кортежи и последовательности :
Кортеж состоитиз числа значений, разделенных запятыми, например: ...
Как видите, на выходе кортежи всегда заключаются в круглые скобки, поэтому вложенные кортежи интерпретируются правильно;они могут быть введены с или без окружающих скобок, хотя часто все равно необходимы скобки (если кортеж является частью большего выражения).