填充名单上有一个名为甲板有16个项目在其列表:与价值
deck = range(0,8)*2
我需要创建具有相同的条目数为甲板名单列表,但最初,他们都设置为假
说,新的列表的名称是new_list
如何在不打字的情况下创建此列表错误 16次?当我尝试这个时,我得到索引超出范围错误。
deck = range(0,8)*2
new_list = []
for card in deck:
new_list[card] = False
感谢
填充名单上有一个名为甲板有16个项目在其列表:与价值
deck = range(0,8)*2
我需要创建具有相同的条目数为甲板名单列表,但最初,他们都设置为假
说,新的列表的名称是new_list
如何在不打字的情况下创建此列表错误 16次?当我尝试这个时,我得到索引超出范围错误。
deck = range(0,8)*2
new_list = []
for card in deck:
new_list[card] = False
感谢
您可以通过乘以多次重复的列表。例如,这将解决你的问题:
>>> [False] * 16
[False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False]
您还可以在列表中的多个元素做到这一点,就像这样:
>>> [1, 2] * 5
[1, 2, 1, 2, 1, 2, 1, 2, 1, 2]
如果你想确保名单将扩大,因为你改变了甲板的尺寸,你可以通过长度倍增,像这样:
deck = range(0, 8) * 2
falses = [False] * len(deck)
你可以阅读列表操作here的文档 - 他们是相当方便的像这样的情况!
只是为了澄清为什么你的IndexError
:
当您创建new_list
变量,它的长度为0,并且您尝试访问的第一个元素,它不存在。
因此,为了让列表随着需要而增长,您可以使用append
方法。那么你的代码应该是这个样子:
deck = range(0,8)*2
new_list = []
for card in deck:
new_list.append(False)
比我快10秒...很好解释它。知道哪里出了问题总是很好的。 –
这是一个不错的解决方案,但要注意,对于“复杂”的类型,得到的名单将有'的*同*对象的N'副本,而不是'ñ -1'副本添加到列表中。 – schlimmchen