【发布时间】:2011-12-13 13:19:42
【问题描述】:
我想知道如何创建一个 10 位数字的数组,这样每次显示一个数字的数字时,它会增加其在 10 位数字数组中的匹配位置,如下所示:
digits=[0,0,0,0,0,0,0,0,0,0]
num_digits=[1,2,3,9,1]
数字变成:
digits=[0,2,1,1,0,0,0,0,0,1]
我试过了:
digits[num_digits[j]]=digits[num_digits[j]]+1
(j 在 num_digits 元素上倒退) 但我收到错误“列表索引必须是整数,而不是列表”。
提前致谢!
【问题讨论】:
-
似乎
j不知何故是一个列表,而不是一个整数。显示定义j的代码。 -
有了
j,there is no error的这个定义。 -
defaultdict 和 Counter 是解决这个问题的方法。
-
@PaulMcGuire:我不同意。 Progo's answer 简洁、易读并且比涉及
defaultdict或Counter的任何解决方案都快得多。后者也有优势,但根据问题中给出的信息,无法断定它们是“可行的方法”。 -
@SvenMarnach:好吧,我同意你的一半。我对这里的许多“我试图保持 x 在 y 中的计数”问题中的任何一个的下意识的反应是 defaultdict 或 Counter。在这种特殊情况下,值本身作为列表索引值(值 0-9)干净地工作,并且已知它们的数量很少(10),然后使用 0 的列表并按值保持计数很快和简单。
标签: python arrays list flags digits