从列表中删除空的Counter()对象

时间:2013-10-06 21:28:56

标签: python

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

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

我似乎无法找到一种简单的方法来移除空柜台。

我尝试过使用

counter_list += Counter()

根据文件,没有运气。

del 

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

任何建议都表示赞赏,并为未来的额头拍打提前道歉。

3 个答案:

答案 0 :(得分:4)

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

counter_list = [item for item in counter_list if item]

这是有效的,因为空的计数器为Falsish,而非空的计数器为Truish

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

In [28]: bool(collections.Counter([1]))
Out[28]: True

答案 1 :(得分:1)

尝试:

counter_list[:] = (c for c in counter_list if c)

答案 2 :(得分:1)

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

counter_list = [item for item in counter_list if len(item) != 0]