我有一个名为deck的列表,其中包含16个项目:
deck = range(0,8)*2
我需要创建一个列表,其中的条目数量与 deck 列表相同,但最初它们都设置为 False
假设新列表的名称为 new_list
如何创建此列表而不必输入16次 False?当我尝试时,会出现索引超出范围的错误。
deck = range(0,8)*2
new_list = []
for card in deck:
new_list[card] = False
谢谢
我有一个名为deck的列表,其中包含16个项目:
deck = range(0,8)*2
我需要创建一个列表,其中的条目数量与 deck 列表相同,但最初它们都设置为 False
假设新列表的名称为 new_list
如何创建此列表而不必输入16次 False?当我尝试时,会出现索引超出范围的错误。
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)
仅仅是为了澄清为什么会出现IndexError
的错误:
当你创建变量new_list
时,它的长度为0,并且你试图去访问第一个元素,但是这个元素并不存在。
因此,为了让列表随着你需要而增长,你可以使用append
方法。这样,你的代码应该如下所示:
deck = range(0,8)*2
new_list = []
for card in deck:
new_list.append(False)
n
个相同的对象副本,而不是将n-1
个副本添加到列表中。 - schlimmchen