如何从列表中计算每组中的负数和正数?

pun缸

我有包含30个数字的列表

list = [-21,-22,-33,-55,-454,65,48,-516,614,6,2,-64,-64,-87,6,45,87,15,11,03,-34,-6,-68,-959,-653,24,658,68,9,-2181]

现在首先我要计算连续3个正数或负数的数量。为此,我正在使用此程序:

list = [-21,-22,-33,-55,-454,65,48,-516,614,6,2,-64,-64,-87,6,45,87,15,11,03,-34,-6,-68,-959,-653,24,658,68,9,-2181]
counts = []
count = 0

daysCounter = 1
plus_counter = 0
minus_counter = 0
row_counter = 0
answer_counter = 1

for each in list: # for the "dev column"
    if each > 0:
        minus_counter = 0
        plus_counter += 1

        if plus_counter == 3:
            count = answer_counter
            row_counter = answer_counter
            counts.append(count)
            plus_counter = 0
            answer_counter += 1

        else:
            counts.append(0)

    elif each < 0:
        plus_counter = 0
        minus_counter += 1

        if minus_counter == 3:
            count = answer_counter
            row_counter = answer_counter
            counts.append(count)
            minus_counter = 0
            answer_counter += 1
        else:
            counts.append(0)

    row_counter += 1

print counts

输出:

[0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 4, 0, 0, 5, 0, 0, 6, 0, 0, 0, 0, 7, 0, 0]

这是正确的,但我想将计数器重置在该%10 == 0位置。基本上,如果列表包含30个元素,那么我想在0到10个元素之间,然后在11到20个之间,再到21到30个元素之间进行计数。所需的输出:

[0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0]
克里斯·道尔

您的问题对我来说没有任何意义,您说要在每个模块10索引上重设,但是然后继续说出要包含的30个元素的列表

  • 0至10(这是11个元素)
  • 11至20(这是10个元素)
  • 21至30(这是10个元素)

这总共是31个元素,但是您说列表包含30个元素。从0到29进行索引。所以我在这里假设您的确意味着每10个元素IE 0到9、10到19、20到29。这使我的输出与您的输出不一致,但是我只能在此假设您误算了索引。

nums = [
    -21, -22, -33, -55, -454, 65, 48, -516, 614, 6,
    2, -64, -64, -87, 6, 45, 87, 15, 11, 3,
    -34, -6, -68, -959, -653, 24, 658, 68, 9, -2181
]

nths = 10
sequential_limit = 3
sequential_count = sequential_finds = 0
indexer = sequential_limit - 1
sequential_list = [0 for _ in range(indexer)]
skip = 0

for index, num in enumerate(nums[indexer:], indexer):
    result = 0
    if index % nths == 0:
        sequential_count = sequential_finds = 0
        skip = indexer
    if skip:
        skip -= 1
    else:
        negative = sum(1 for next_num in nums[index - indexer:index + 1] if next_num < 0)
        positive = sum(1 for next_num in nums[index - indexer:index + 1] if next_num >= 0)
        if sequential_limit in (positive, negative):
            sequential_finds += 1
            sequential_count = 0
            skip = indexer
            result = sequential_finds
    sequential_list.append(result)

print(sequential_list)

输出值

[0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 0, 3, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从仅“计算正数而忽略负数”的数组列表中计算平均值?

如何计算向量中的符号变化(正数或负数)

如何从同一列中添加正数和负数

如何从数组中定位负数,并获取所有正数的和?

如何使用函数式编程返回列表中的所有正数和第一个负数?

排列数组中的所有负数和正数时如何避免交换负数

Javascript如何添加负数和正数

条件:RPG中的正数和负数

对于Java中的循环,负数和正数

开放式办公室公式:计算同一列中的正数和负数

偏移两个列表中的正数和负数并在 Python 中获取其余数

负数和正数

在带有负数和正数的数据框中查找最大负数和最小正数

如何在列表中的正数之后打印第一个负数?

Python-将整数列表分为正数和负数

计算 Python 中多列的正数、负数或零值数字

如何通过dataframe列中的正数和负数范围构建窗口?

如何在C ++中对同时包含负数和正数的字符串数组进行排序?

如何在数组中查找最大负数和最小正数

如何使用ggplot2以不同的方式在此负数和正数栏中添加轴文本?

如何在VBA中生成随机的正数和负数

使用javascript将数组中的正数和负数分开

NumPy数组中负数和正数的孤岛计数

在R中创建具有正数和负数的序列

列出表格中的所有负数和最小正数

C将文件中的负数和正数读入数组

将数组中的负数和正数相加得到结果

正数和负数的累积回报

如何知道python中2个列表中相同索引处的值在正数还是负数上相同?