【问题标题】:Counter() subtractCounter() 减法
【发布时间】:2017-12-27 14:04:50
【问题描述】:

我有两个列表,我想从 neg 中减去列表 pos 中元素的频率。所以:

neg = [x for x in all[:800000]]
pos = [x for x in all[800000:]]
count_pos = Counter(pos)
count_neg = Counter(neg)
positivity = count_pos.subtract(count_neg)
print(positivity)

我希望得到结果,但代码返回:

None

有什么问题?

【问题讨论】:

  • 试试:print(count_pos).
  • “减法”方法不返回任何内容,因此您得到了 None。
  • @SuperSaiyant,帽子没问题。显示元素的计数器:频率对。
  • @kuonb,那该怎么办?
  • 正如SuperSaiyan所说,解决方案在“count_pos”中,所以打印出来看看。

标签: python list counter subtraction


【解决方案1】:

正如问题中的 cmets 所指出的,subtract 方法已应用于其对象并返回 None。要获得您想要的行为,您可以像这样使用- 运算符:

positivity = count_pos - count_neg

或者您可以先复制您的 count_pos 计数器并使用它的减法:

positivity = Counter(count_pos)
positivity.subtract(count_neg)

在这两种情况下,您最终都会得到一个变量 positivity,其中包含 count_pos 和 count_neg 之间的差异

【讨论】:

  • 感谢@bunji,但 - 不适用于负输出。
  • 第一个示例,使用 - 运算符只会给出至少 1 的输出。但我给出的第二个示例应该返回负输出。来自Counter docs:“......输入和输出都可能为零或负数。”
【解决方案2】:

只需将对应的行替换为

positivity = count_pos - count_neg

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-13
    • 2014-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-15
    • 1970-01-01
    相关资源
    最近更新 更多