2012-06-01 208 views
12

我正在寫一個函數來計算日曆日期。雖然削減線路,我發現我無法分配多個變量到相同的範圍Python將多個變量分配給相同的列表值?

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

會有一個有效的方式來分配這些值,爲什麼python會給ValueError?

+2

是否有任何理由你不使用日期時間模塊? http://docs.python.org/library/datetime.html – robert

回答

55

使用

Jan = Mar = May = ... = range(1, 32) 
+38

我正在輸入一個答案,就像你提交你的答案一樣,然後意識到沒有辦法比python的發明者給出更好的答案:-) – jdi

+1

@ tijko:它確實允許。但'range(x)'的結果試​​圖解壓到左邊的變量中。這工作:'a,b = 1,2' – jdi

+0

@jdi:感謝您的答覆,我的意思是爲什麼多個變量不能分配到相同的範圍? – tijko

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

+0

謝謝,那正是我想知道的,並且對我的後續問題非常有意義。所以它很好地分配:a,b,c =範圍(3) – tijko