使用值填充列表

时间:2016-08-03 11:01:52

标签: python list python-2.7 for-loop

我有一个名为 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

由于

2 个答案:

答案 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)