Для Loop с 2 переменными, но желая перечислить только 1 из них - PullRequest
0 голосов
/ 01 ноября 2019

В Python 3 я хочу провести цикл For для двух переменных, но используя функцию перечисления только для первой. Это выглядит так:

for no, (r, j) in enumerate(all_accepted_results), all_accepted_accuracies:
    plt.plot(r, label = 'Forecast #%d - Accuracy %f'%(no + 1, all_accepted_accuracies[j] ))

, где no будет числом из функции перечисления, r будет фактическим значением из списка all_accepted_results, который отображается на графике, и j будет фактическим значением из списка all_accepted_accuracies, которое добавляется в качестве метки к легенде.

Прямо сейчас я получаю сообщение об ошибке:

ValueError: too many values to unpack (expected 2)

Я также пытался:

for no, r, j in enumerate(all_accepted_results), all_accepted_accuracies:

... и получаю ту же ошибку, что и выше, только "(ожидается 3)", а также пытался:

for no, (r, j) in enumerate(all_accepted_results, all_accepted_accuracies):

... что и привело меня к ошибке:

TypeError: 'list' object cannot be interpreted as an integer

, поэтому я не знаю, что делать дальше. Очевидно, я просто пытаюсь построить значение r сверху, и в легенде о графике нужно сказать, какой прогноз # это, и соответствующее ему число точности.

Я скоро отправлюсь на работу, но приеду сюда еще раз, если у кого-нибудь появятся какие-нибудь идеи для меня. Спасибо!

1 Ответ

3 голосов
/ 01 ноября 2019

Вы можете zip 'em all:

for (no, r), j in zip(enumerate(all_accepted_results), all_accepted_accuracies):

Обратите внимание, что это (no, r), j, а не no, (r, j), потому что enumerate дает кортежи типа (no, r), не только последовательные целые числа no.

Ваш код:

for ... in enumerate(all_accepted_results), all_accepted_accuracies:

... в основном такой же, как этот:

>>> for a in 1,2,3,4,5:
...  print(a)
... 
1
2
3
4
5
>>>

Часть после in на самом деле представляет собой кортеж , который, в вашем случае, содержит два элемента: объект enumerate и all_accepted_accuracies, так что вы закончите итерацией по этим двум объектам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...