4

我有一个简单的计数器列表:

> counter_list
Counter({'Pig': 1}), Counter(), Counter({'Chicken': 3})

我似乎找不到移除空柜台的简单方法。

我试过使用

counter_list += Counter()

根据文档,没有运气。

del 

似乎只删除计数器的内容,而不是实际的计数器,充其量只是创建更多的空计数器。

感谢任何建议,并为未来的前额拍板提前道歉。

4

3 回答 3

4

使用列表推导来构建一个新的counter_list

counter_list = [item for item in counter_list if item]

这是因为空的 Counter 是Falsish,而非空的 Counter 是Truish

In [27]: bool(collections.Counter())
Out[27]: False

In [28]: bool(collections.Counter([1]))
Out[28]: True
于 2013-10-06T21:30:36.023 回答
1

尝试:

counter_list[:] = (c for c in counter_list if c)
于 2013-10-06T21:31:29.800 回答
1

一个更通用的答案,它不依赖于item' Falseish' 的类型(但假设它的长度由 合理返回len

counter_list = [item for item in counter_list if len(item) != 0]
于 2013-10-06T21:32:13.060 回答