2017-01-30 77 views
-1

我一直在練習Python和2D列表賦值。我一直試圖創建一個每天有24天(空字符串)的7天的日曆。Python字符串賦值錯誤

day = [""] * 24 
timetable = day * 7 

    timetable[0][15] = "meeting with Jane" 

但是,當我嘗試分配上述字符串時,我得到Typeerror。

Traceback (most recent call last): 
File "C:\Users\workspace\test\2D.py", line 7, in <module> 
timetable[0][15] = "meeting with Jane" 
TypeError: 'str' object does not support item assignment 

我明白字符串是不變的,所以我用列表的方法.append()但它仍然沒有工作不能被重新分配的值。

+0

有人能告訴我如何在這裏分配一個字符串?如上所示,我收到一個錯誤。 – skyrocker

回答

6
timetable = day * 7 

這並不構成2維列表;它會生成一維列表,其長度是day的7倍。

試試這個:

timetable = [day[:] for _ in range(7)] 

這使得timetable是一個列表,它是day 7份。複製位([:],完整分片)對於避免不同的日期都引用同一個列表是必要的,這意味着如果您在某一天修改了所有日期,這些日期可能會發生變化 - 可能不是您想要的。

+0

謝謝,我如何分配一個字符串有一天。 例如:如果我想在13小時給星期二分配一個字符串,那麼我該怎麼做? – skyrocker

1

後做:

timetable = [day[:] for _ in range(7)] 

Amber說,你可以做你以前試過的字符串賦值:

timetable[0][15] = "meeting with Jane" 

現在的第一天已經有指定爲「與會議16小時簡。