Python 用值填充列表

Python 用值填充列表,python,list,python-2.7,for-loop,Python,List,Python 2.7,For Loop,我有一个名为“甲板”的列表,其中有16项: deck = range(0,8)*2 我需要创建一个与组列表具有相同条目数的列表,但最初,它们都设置为False 假设新列表的名称为new\u list 如何创建此列表而不键入False16次?当我尝试此操作时,我会得到索引超出范围的错误 deck = range(0,8)*2 new_list = [] for card in deck: new_list[card] = False 谢谢您可以将列表相乘多次。例如,这将解决您的问题:

我有一个名为“甲板”的列表,其中有16项:

deck = range(0,8)*2
我需要创建一个与列表具有相同条目数的列表,但最初,它们都设置为False

假设新列表的名称为new\u list

如何创建此列表而不键入False16次?当我尝试此操作时,我会得到索引超出范围的错误

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)
deck = range(0,8)*2
new_list = []
for card in deck:
    new_list.append(False)

您可以阅读有关列表操作的文档,它们在这种情况下非常方便

为了澄清为什么会有一个
索引器

创建
new_list
变量时,该变量的长度为0,您尝试访问不存在的第一个元素

因此,为了让列表按需要增长,您可以使用
append
方法。那么您的代码应该如下所示:

deck = range(0, 8) * 2
falses = [False] * len(deck)
deck = range(0,8)*2
new_list = []
for card in deck:
    new_list.append(False)

比我快10秒。。。很好的解释。知道出了什么问题总是好的。这是一个简洁的解决方案,但要注意,对于“复杂”类型,结果列表将包含相同对象的
n
副本,而不是添加到列表中的
n-1
副本。