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的一次投票