我一直在练习Python和2D列表分配。我一直在尝试创建一个日历,每天7天,每天24小时(空字符串)。
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 :(得分:6)
try-catch
这不是一个二维列表;它使得一维列表的长度是timetable = day * 7
的7倍。
请改为尝试:
day
这使得timetable = [day[:] for _ in range(7)]
成为timetable
的7份副本。复制位(day
,一个完整的切片)是必要的,以避免所有引用相同列表的不同日期,这意味着如果你修改了一天所有的日子都会改变 - 可能不是你想要的。
答案 1 :(得分:1)
完成后:
timetable = [day[:] for _ in range(7)]
如Amber所述,你可以像以前一样尝试字符串赋值:
timetable[0][15] = "meeting with Jane"
现在,第一天的第16个小时被指定为与Jane&#39;会面。