2015-12-02 3 views
0

У меня вопрос простой python. Сначала просмотрите код.Python «в операторе» с несколькими аргументами

l1 = ['one', ['1', '2']] 

for item1, item2 in l1: 
    print (item1) 
    for subitem in item2: 
     print (subitem) 

Я предположил, что это напечатает один ', затем «1» «2», но я получаю сообщение об ошибке:

for item1, item2 in l1: 
ValueError: too many values to unpack (expected 2) 

Там некоторый код в учебнике, что я ниже (https://automatetheboringstuff.com/chapter9/), что заставляет меня поверить, что то, что я пытаюсь сделать (множественные аргументы с инструкцией in), возможно, но в чем тут логика?

+1

в первом цикле вы делаете 'item1, item2 =" one "', поэтому вы получаете ошибку – furas

ответ

2

Ваш внешний контур не должен быть цикл:

item1, item2 = l1 
print(item1) 
for subitem in item2: 
    print(subitem) 

Цикл, как for item1, item2 in l1 ожидает, что каждый элемент l1 для распаковки в двух элементов в отдельности. Например, если l1 были [(1, 2), (3, 4), ...], тогда первая итерация установила item1, item2 = 1, 2, а вторая итерация установила item1, item2 = 3, 4 и так далее.

Смежные вопросы