12

我正在编写一个函数来计算日历日期。在减少行数时,我发现我无法将多个变量分配给同一个范围

Jan, Mar, May, Jul, Aug, Oct, Dec = range(1,32)

是否有一种有效的方法来分配这些值,为什么 python 会给出 ValueError?

4

2 回答 2

65

利用

Jan = Mar = May = ... = range(1, 32)
于 2012-06-01T21:37:41.820 回答
6

执行您所描述的操作的最简单方法是使用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

于 2012-06-01T21:45:45.870 回答