我有一个名为 deck 的列表,其中包含16个项目:
deck = range(0,8)*2
我需要创建一个与套牌列表具有相同条目数的列表,但最初,它们都设置为 False
说新列表的名称是 new_list
如何在不输入错误 16次的情况下创建此列表?当我尝试这个时,我得到索引超出范围错误。
deck = range(0,8)*2
new_list = []
for card in deck:
new_list[card] = False
由于
答案 0 :(得分:5)
您可以通过相乘重复列表多次。例如,这将解决您的问题:
>>> [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的文档 - 它们非常适合这种情况!
答案 1 :(得分:2)
只是为了澄清为什么会得到IndexError
:
创建new_list
变量时,它的长度为0,并且您尝试访问第一个不存在的元素。
因此,为了让列表按需增长,您可以使用append
方法。然后你的代码应该是这样的:
deck = range(0,8)*2
new_list = []
for card in deck:
new_list.append(False)