Мне было просто любопытно, и я подумал, что это логически должно работать на питоне. Я попробовал следующий код в консоли Python:
mylist = [('a','b'),('c','d')]
for i,x,y in enumerate(mylist):
print i,x,y
ValueError: need more than 2 values to unpack
Но если я попытаюсь не перечислять, а просто сделаю следующее:
mylist = [('a','b'),('c','d')]
for i,x in mylist:
print i,x
это работает нормально. Мне просто интересно, почему первый метод не работает, поскольку это не должно мешать распаковке значений Python из кортежей, не так ли? Если только я не упустил из виду что-то смущающе простое. Очень хотелось бы узнать причину такого странного поведения.
Как генерировать перечисляемые кортежи из словарь со списком в Python?
говорит, что значение функции enumerate() представляет собой кортеж из двух элементов. Но в моем случае второй элемент кортежа, возвращаемый enumerate, сам будет кортежем, так почему его нельзя распаковать?
for z in enumerate(mylist): print(z)
и посмотреть, что получится. - person abarnert   schedule 10.01.2014