Ответ 1
Использование
Jan = Mar = May = ... = range(1, 32)
Я пишу функцию для вычисления дат календаря. При сокращении строк я обнаружил, что не могу назначить несколько переменных в один и тот же диапазон.
Jan, Mar, May, Jul, Aug, Oct, Dec = range(1,32)
Будет ли эффективный способ присвоить эти значения и почему python предоставляет ValueError?
Использование
Jan = Mar = May = ... = range(1, 32)
Самый простой способ сделать то, что вы описали, - использовать синтаксис x=y=z ... = VALUE
, где x, y, z и любые другие включенные вами перемены будут иметь значение VALUE
.
В вашем примере все переменные, разделенные запятыми в левой части знака равенства, назначаются последовательным значениям кортежа с правой стороны. Следовательно, вы можете сделать что-то вроде этого:
values = ( 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec = values
В вашем коде у вас есть 7 значений слева и 31 справа, поэтому вы получаете ошибку вне диапазона, потому что список слева длиннее числа или переменных на левой стороне, которым нужно назначить значения в нем. Я знаю, что код, приведенный выше, не имеет большого значения для достижения вашей цели, но я думал, что по крайней мере даю представление о том, что он пытался сделать.: D