Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当我不知道元素的数量时,如何为列表分配零_Python_List - Fatal编程技术网

Python 当我不知道元素的数量时,如何为列表分配零

Python 当我不知道元素的数量时,如何为列表分配零,python,list,Python,List,我想在列表中存储不同书籍的份数,如下所示 [10,14,12,16,42,23]。这里第一个元素,即索引[0]表示第一本书有10份,第二本书(索引[1])有14份这样的副本。但问题是我不知道有多少种书,也就是说,列表中的元素总数是未知的。因此,我创建了一个空列表,如下所示: li = [] 之后,我运行for循环,并在每次迭代中添加和更新list元素,如下所示: for x in range(5): li[x] = li[x] + 1 但我得到了以下错误: li[x]=li[x]+1

我想在列表中存储不同书籍的份数,如下所示
[10,14,12,16,42,23]
。这里第一个元素,即索引[0]表示第一本书有10份,第二本书
(索引[1])
有14份这样的副本。但问题是我不知道有多少种书,也就是说,列表中的元素总数是未知的。因此,我创建了一个空列表,如下所示:

li = []
之后,我运行for循环,并在每次迭代中添加和更新list元素,如下所示:

for x in range(5):
    li[x] = li[x] + 1
但我得到了以下错误:
li[x]=li[x]+1
索引器:列表索引超出范围

因为未将
li[x]
分配给
0
或任何值。我的问题是,当我不知道元素的数量并且动态地追加列表元素时,如何为列表分配零。请提出一些方法来达到我的要求

您可以在列表中指定0作为值。 您可以尝试:

>>> for x in range(5):
      li.append(0)

>>> print li
[0, 0, 0, 0, 0]

>>> for x in range(5):
      li[x] = li[x] + 1 

>>> print li
[1, 1, 1, 1, 1]
试试这个:

> li = [0] * 5
这就是
li
的样子:

> li =  [0, 0, 0, 0]
因为您不知道大小,所以您所能做的就是创建一个列表

> li = []
在某些条件之后,继续向其追加
0

> if condition: 
     li.append(0)

使用
collections.Counter
/
collections.defaultdict(int)
对象,您应该能够在尝试时自动递增。@cᴏʟᴅsᴘᴇᴇᴅ 谢谢你的解决方案。它对我非常有效。我曾经使用过collections.Counter。我已经提到,在for循环之前,元素的数量是未知的。实际上,我正在处理大量的元素。因此,在这种情况下,运行两次循环似乎效率低下。但感谢您提供的解决方案。@harsha collection counter将是此场景的正确解决方案。仍然是对理解OP的一次投票