Python 用值填充列表
我有一个名为“甲板”的列表,其中有16项: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 谢谢您可以将列表相乘多次。例如,这将解决您的问题:
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
副本。